This function uses the navigation system to make an entity walk along a path to a specific point in the world.
If the path is able to be calculated true is returned, otherwise false is returned.
--Create a window
window = Window:Create()
--Create a rendering context
context = Context:Create(window)
--Create a world
world = World:Create()
--Create a camera
local camera = Camera:Create()
camera:SetRotation(35,0,0)
camera:Move(0,0,-8)
--Create a light
local light = DirectionalLight:Create()
light:SetRotation(35,35,0)
--Enable navmesh debugging
camera:SetDebugNavigationMode(true)
--Create the ground
local ground = Model:Box(10,1,10)
ground:SetPosition(0,-0.5,0)
ground:SetColor(0.0,0.25,0.0)
--Create a shape
local shape = Shape:Box(0,0,0, 0,0,0, 10,1,10)
ground:SetShape(shape)
shape:Release()
--Create a model
--This is an obstacle the player will walk around
entity = Model:Box(1,1,3)
entity:SetColor(0.0,0.0,1.0)
entity:SetPosition(0,0.5,0)
--Create a shape
local shape = Shape:Box(0,0,0,0,0,0,1,1,3)
entity:SetShape(shape)
shape:Release()
--Enable navigation obstacles
ground:SetNavigationMode(true)
entity:SetNavigationMode(true)
--Build the navigation mesh
world:BuildNavMesh()
--Create a character
player = Pivot:Create()
local visiblecapsule = Model:Cylinder(16,player)
visiblecapsule:SetScale(1,2,1)
visiblecapsule:SetPosition(0,1,0)
player:SetPosition(-4,0,0)
player:SetMass(1)
player:SetPhysicsMode(Entity.CharacterPhysics)
while window:KeyHit(Key.Escape)==false do
if window:Closed() then break end
if (player) then player:GoToPoint(4,0,0,1.4,1) end
Time:Update()
world:Update()
world:Render()
context:SetBlendMode(Blend.Alpha)
context:DrawText("NavMode: ".. tostring(entity:GetNavigationMode()),2,2)
context:Sync()
end