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

Physics

Even though agents are simulated with physics, not all of the agent's physics parameters are enforced at the physics simulation level. The mass of an agent, for example, is the identical mass used within the physics simulation itself, while the MaxForce and MaxSpeed functions of an agent are only enforced by the agent. These two properties represent the maximum amount of force an agent can exert on itself and the max speed the agent can reach without any outside influences.

An intuitive example of why this separation is desirable when dealing with agent physics is gravity. When an agent accelerates to its max speed, we still want gravity to accelerate the agents downward in the case of falls. This acceleration can force agents to have a speed larger than their max speed property.

Mass

To access and modify the mass of our agents we can use the agent's GetMass and SetMass helper functions.

local mass = agent:GetMass();
agent:SetMass(mass);

The max force

The maximum force of our agents can be accessed and set using the GetMaxForce and SetMaxForce functions.

local maxForce = agent:GetMaxForce();
agent:SetMaxForce(maxForce);

The max speed

To set and access the max speed property of our agents, we can use the GetMaxSpeed and SetMaxSpeed functions.

local maxSpeed = agent:GetMaxSpeed();
agent:SetMaxSpeed(maxSpeed);

Speed

Setting and accessing the speed of our agents can be done through the GetSpeed and SetSpeed functions.

local speed = agent:GetSpeed();
agent:SetSpeed(speed);

Velocity

Similarly, to access and set the velocity of our agents, we can use the GetVelocity and SetVelocity functions.

local velocityVector = agent:GetVelocity();
agent:SetVelocity(velocityVector);