I am currently building a Universal FUNCTION LIBRARY... One of the functions I am working on is
Universal_MoveCharacter(Player,ObjectFile$,SCX#,SCY#,SCZ#,MaxObjectLimit,PlayerCycle,passgravity,playerspeed#)
and what it does is load object and responds to arrow keys in the same function!! Theres a lot more I can do but I just needed some help on this...
Note: Where it says YOUR MODEL FILE HERE, means to put that Animated Object file there.. like its name is "car.x" in place of YOUR MODEL FILE HERE.. (Believe me it was necessary lol)
sync on
player=1
do
PlayerCycle=Universal_MoveCharacter(Player,YOUR MODEL FILE HERE,300.0,300.0,300.0,5000,PlayerCycle,passgravity,playerspeed#)
sync
loop
function Universal_MoveCharacter(Player,ObjectFile$,SCX#,SCY#,SCZ#,MaxObjectLimit,PlayerCycle,passgravity,playerspeed#)
count=PlayerCycle
` MaxObjectLimit - (integer) The maximum number of objects in a world
if count=0
load object ObjectFile$, Player
set object speed Player,30
scale object Player,SCX#,SCY#,SCZ#
set object ambience Player,100
set object Player,1,0,1,1,1,1
endif
` Walks
if upkey()=0 then anim=0
if upkey()=1 then anim=1
select anim
case 0
set object frame Player,0
stop object Player
endcase
case 1
if object playing(Player)=0 then play object Player,1,total object frames(Player)-1
oldx#=object position x(Player)
oldy#=object position y(Player)
oldz#=object position z(Player)
px#=newxvalue(object position x(Player),wrapvalue(0+object angle y(Player)),playerspeed#)
pz#=newzvalue(object position z(Player),wrapvalue(0+object angle y(Player)),playerspeed#)
py#=object position y(Player)
position object Player,px#,py#,pz#
for k=1 to MaxObjectLimit
if object exist(k)=1
if object collision(Player,k)=1 and player<>k
position object Player,oldx#,oldy#,oldz#
endif
endif
next k
endcase
case 2
endcase
case 3
endcase
case default
endcase
endselect
` Gravity
oldy#=object position y(player)
if passgravity=0 then position object player,object position x(player), object position y(player)-0.69,object position z(player)
if matrix exist(1)=1 then y#=get ground height(1,object position x(player),object position z(player))
if object position y(player)<y# then position object player,object position x(player),y#,object position z(player)
` Keeps player on platform once falling on it
for i=1 to MaxObjectLimit
if Player<>i and object exist(i)=1
if object collision(player,i)=1
position object player,object position x(player),oldy#,object position z(player)
endif
endif
next i
` Handles Rotation
if rightkey()=1
yrotate object Player,object angle y(Player)+3
for b=9 to 8+bullets
if object exist(b)=1
yrotate object b,object angle y(b)+3
`fix object pivot b
endif
next b
endif
if leftkey()=1
yrotate object Player,object angle y(Player)-3
for b=9 to 8+bullets
if object exist(b)=1
yrotate object b,object angle y(b)-3
`fix object pivot b
endif
next b
endif
` Camera Follows Player
set camera to follow 0, object position x(Player),object position y(Player),object position z(Player),Object angle y(Player)-180,10,5,40,1
count=count+1
PlayerCycle=count
endfunction PlayerCycle
- Infinity is Simplicity -