`versual's simple ai
`make variable's
global player as integer
global ai as integer
global waypoint as integer
global waypointup as integer
global distance as word
sync on
sync rate 30
`a simple ai
player = 1
ai = 2
waypoint = 3
waypointup = 4
`the player
make object cube player,1
`color player
position object player,-7,-7,0
color object player,rgb(0,0,255)
Set object collision to boxes player
`the ai
make object cube ai,1
`color ai
color object ai,rgb(255,0,0)
`position ai
position object ai,-15,0,0
Set object collision to boxes ai
`waypoint
make object cube waypoint,1
position object waypoint,9,0,0
color object waypoint,rgb(0,255,0)
Set object collision to boxes waypoint
`waypoint 3
make object cube waypointup,1
position object waypointup,-1,7,0
color object waypointup,rgb(0,255,0)
Set object collision to boxes waypointup
`position camera in 3d world
position camera 0,0,-20
point object ai,object position x(waypoint),object position y(waypoint),object position z(waypoint)
do
move object ai,0.1
go()
if object collision(ai,waypoint)
point object ai,object position x(player),object position y(player),object position z(player)
move object ai,0.1
endif
if object collision(ai,player)
point object ai,object position x(waypointup),object position y(waypointup),object position z(waypointup)
move object ai,0.1
endif
if object collision(ai,waypointup)
point object ai,object position x(waypoint),object position y(waypoint),object position z(waypoint)
move object ai,0.1
endif
`making ai follow player
`player control's
if rightkey()=1 then move object right player,1
if leftkey()=1 then move object left player,1
if upkey()=1 then move object up player,1
if downkey()=1 then move object down player,1
text 240,10,"Versual's simple 3 waypoint ai."
sync
loop
function go()
x1 = object position x(player)
y1 = object position y(player)
z1 = object position z(player)
x2 = object position x(ai)
y2 = object position y(ai)
z2 = object position z(ai)
distance = sqrt((x1-x2)^2 + (y1-y2)^2 + (z1-z2)^2)
if (ai > distance)
point object ai,object position x(player)+x1,object position y(player)+y1,object position Z(player)+z1
move object ai, 0.1
endif
endfunction 1