Game Development Reference
In-Depth Information
Avoiding blocks and agents
Modifying the SeekingAgent.lua script by adding the weighted sum of the For-
ceToAvoidAgents 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 +
avoidObjectForce * avoidanceMultiplier;
AgentUtilities_ApplyForce(
agent, steeringForces, deltaTimeInSeconds);
...
end
Sandbox.lua :
require "DebugUtilities";
Search WWH ::




Custom Search