Game Development Reference
In-Depth Information
The idle action
The blackboard can also be used for temporary data, such as the idle action's
idleEndTime
data. Once the idle action terminates, we merely set the blackboard attrib-
ute to
nil
in order to remove it from the blackboard:
SoldierActions.lua
:
function SoldierActions_IdleInitialize(userData)
userData.controller:QueueCommand(
userData.agent,
SoldierController.Commands.IDLE);
local sandboxTimeInMillis =
Sandbox.GetTimeInMillis(userData.agent:GetSandbox());
userData.blackboard:Set(
"idleEndTime",
sandboxTimeInMillis + 2000);
end
function SoldierActions_IdleUpdate(deltaTimeInMillis,
userData)
local sandboxTimeInMillis =
Sandbox.GetTimeInMillis(userData.agent:GetSandbox());
if (sandboxTimeInMillis >=
userData.blackboard:Get("idleEndTime")) then
userData.blackboard:Set("idleEndTime", nil);
return Action.Status.TERMINATED;
end
return Action.Status.RUNNING;
end