Modifying the SeekingAgent.lua
script by adding the weighted sum of the ForceToAvoidAgents
and ForceToAvoidObjects
functions allows for the seeking agent to avoid potential collisions. When running the sandbox, try shooting boxes in the path of the agent and watch it navigate around the boxes:
SeekingAgent.lua
function Agent_Update(agent, deltaTimeInMillis) local destination = agent:GetTarget(); local deltaTimeInSeconds = deltaTimeInMillis / 1000; local avoidAgentForce = agent:ForceToAvoidAgents(1.5); local avoidObjectForce = agent:ForceToAvoidObjects(1.5); local seekForce = agent:ForceToPosition(destination); local targetRadius = agent:GetTargetRadius(); local radius = agent:GetRadius(); local position = agent:GetPosition(); local avoidanceMultiplier = 3; -- Sum all forces and apply higher priority to avoidance -- forces. local steeringForces = seekForce + avoidAgentForce * avoidanceMultiplier ...