Learning Game AI Programming with Lua
上QQ阅读APP看书,第一时间看更新

Knowledge

Agents themselves have a very basic set of knowledge so that external Lua scripts such as the sandbox script can direct agents with some amount of persistence. For example, when we create an agent that moves to a target position, we might want the sandbox to set this position instead of the agent having to determine its target.

Target

An agent's target is a vector position. Typically, agents will use the target as a position they want to reach or the known position of another agent.

local targetVector = agent:GetTarget();
agent:SetTarget(targetVector);

Target radius

A target radius is a number value that agents use to determine whether they are close enough to their target without having to be exactly at the target position. This fudge factor helps agents avoid circling a target position due to small numerical differences in their position and target position.

local targetRadius = agent:GetTargetRadius();
agent:SetTargetRadius(targetRadius );

Path

An agent's path is a series of vector points that the agent uses internally to determine where to move to during path following. Allowing agents to remember their path is a small optimization to avoid having to pass around the path itself during path following calculations. When assigning a path to the agent, we can pass an optional Boolean in order to let the agent know whether the path should loop.

local pathTable = agent:GetPath();
local hasPath = agent:HasPath();

local path = {
    Vector.new(0, 0, 0),
    Vector.new(10, 0, 10),   
    Vector.new(0, 0, 10) };

agent:SetPath(path, cylic);