Quote: "Nice one ..!!"
Cheers
MoveX/Z or Y (depending on your set up) are multipliers so you'd multiply them by your speed, example:
move object 1, moveZ# * speed#
Because of this:
moveZ# = (forward-backward)
If forward = 1 then moveZ = 1-0 which = 1. If backwards = 1 then moveZ = 0-1 which = -1. Because of this you don't need to put a - in front of moveX/Y/Z because it handles both directions. Example:
sync on : sync rate 60
autocam off
position camera 0,15,-15
point camera 0,0,0
make object cube 1,1
speed# = 0.2
do
forward = keystate(17) || upkey()
backward = keystate(31) || downkey()
left = keystate(30) || leftkey()
right = keystate(32) || rightkey()
moveX# = (right-left)
moveZ# = (forward-backward)
move object 1, moveZ# * speed#
move object right 1, moveX# * speed#
sync
loop
The move multipliers are handy because we can scale them for different speeds rather than using multiple speed variables. For instance if we were strafing while moving forward or backwards we'd want to scale down the speed because combining movements would slow the player down a little we can just scale the multipliers:
sync on : sync rate 60
autocam off
position camera 0,15,-15
point camera 0,0,0
make object cube 1,1
speed# = 0.2
do
forward = keystate(17) || upkey()
backward = keystate(31) || downkey()
left = keystate(30) || leftkey()
right = keystate(32) || rightkey()
moveX# = (right-left)
moveZ# = (forward-backward)
if moveX# <> 0 && moveZ# <> 0
length# = sqrt( moveX#*moveX# + moveZ#*moveZ# )
moveX# = moveX# / length#
moveZ# = moveZ# / length#
endif
move object 1, moveZ# * speed#
move object right 1, moveX# * speed#
sync
loop
"Get in the Van!" - Van B