Game Development Reference
In-Depth Information
The idle action
The first action we'll create is the basic and default choice from our agents that are going
forward. The idle action wraps the IDLE animation request to our soldier's animation con-
troller. As the animation controller will continue looping our IDLE command until a new
command is queued, we'll time our idle action to run for 2 seconds, and then terminate it to
allow another action to run:
SoldierActions.lua :
function SoldierActions_IdleCleanUp(userData)
-- No cleanup is required for idling.
end
function SoldierActions_IdleInitialize(userData)
userData.controller:QueueCommand(
userData.agent,
SoldierController.Commands.IDLE);
-- Since idle is a looping animation, cut off the idle
-- Action after 2 seconds.
local sandboxTimeInMillis = Sandbox.GetTimeInMillis(
userData.agent:GetSandbox());
userData.idleEndTime = sandboxTimeInMillis + 2000;
end
Updating our action requires that we check how much time has passed; if the 2 seconds
have gone by, we terminate the action by returning the terminated state; otherwise, we re-
turn that the action is still running:
SoldierActions.lua :
function SoldierActions_IdleUpdate(deltaTimeInMillis,
userData)
local sandboxTimeInMillis = Sandbox.GetTimeInMillis(
userData.agent:GetSandbox());
if (sandboxTimeInMillis >= userData.idleEndTime) then
userData.idleEndTime = nil;
return Action.Status.TERMINATED;
Search WWH ::




Custom Search