Hi there.
Here is a piece of code that carry a gun and has all camera movements. I hope it can help you . Use the mouse to shoot
autocam off:hide mouse
create bitmap 1,50,50:for i= 1 to 1550:ink rgb(30,255,55),0:line rnd(60),i,i,rnd(130)
next i:blur bitmap 1,6:get image 1,10,10,50,50:delete bitmap 1
sync on
arma=20 //gun
bala=21 //bullet
make object box 1,3000,1,3000
texture object 1,1
scale object texture 1,3,3
make object box arma,1,1,10
make mesh from object 1,arma
make object cylinder 100,18
make mesh from object 2,100
delete object 100
add limb arma,1,1:offset limb arma,1,0,0,-8:scale limb arma,1,150,150,60
add limb arma,2,2:scale limb arma,2,12,50,7:rotate limb arma,2,90,0,0:offset limb arma,2,0,0,-10
color object arma,rgb(10,10,10)
make object box bala,1,1,20:color object bala,rgb(200,0,0):hide object bala
make object sphere 3,30
position object 3,600,20,600
do
gosub _controla_camara
gosub bala
if object collision(bala,3)=1 then position object 3,300+rnd(1000),10,300+rnd(1000)
sync
loop
_controla_camara:
`player controls (camera)
if upkey()=1 then x#=newxvalue(x#,a#,1) : z#=newzvalue(z#,a#,1)
if downkey()=1 then x#=newxvalue(x#,a#,-1) : z#=newzvalue(z#,a#,-1)
if leftkey()=1 THEN x#=NEWXVALUE(x#,a#-90,1)
if leftkey()=1 then z#=NEWZVALUE(z#,a#-90,1)
if rightkey()=1 THEN x#=NEWXVALUE(x#,a#-90,-1)
if rightkey()=1 then z#=NEWZVALUE(z#,a#-90,-1)
`xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
`controlamos la vista de camara
`xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
yrotate camera camera angle y()+(mousemovex()/10.0)
xrotate camera camera angle x()+(mousemovey()/10.0)
a#=camera angle y()
`limitacion de la camara
if camera angle x() >60 then xrotate camera 60
if camera angle x() <-45 then xrotate camera -45
`xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
`updating camera, gun and bullets positions
position camera x#,145,z#
position object arma,x#,145,z#
position object bala,x#,145,z#
set object to camera orientation arma
`moving slightly the gun to its correct position (aprox.)
move object arma,15
move object right arma,3
move object down arma,3
move object bala,15
move object right bala,3
move object down bala,3
return
bala:
set cursor 310,235:ink rgb(255,0,0),0
print " +"
`-------------------------------------------------------------
`making bullet shoot where the gun ends
if dispara=0
set object to object orientation bala,arma
endif
if mouseclick() and dispara=0
dispara=1
show object bala
endif
if dispara=1
la=la+10
run=run+1
move object bala,la
endif
if run>200
run=0
la=0
dispara=0
hide object bala
endif
return
`--------------------------------------------------------
Cheers.
I'm not a grumpy grandpa