I'm using sparkys ray casting for the aim of my weapon but for some reason it seems to be inaccurate. I have the ray casting going from the camera position to the limb which I have positioned in front of me. when I shoot at the blocks in the middle of the map they sometimes hide but other times they won't.
Here's my code:-
Rem Project: FPS SHOOTER
Rem Created: Tuesday, March 15, 2011
Rem ***** Main Source File ****
`Setup
sync on : sync rate 60
set display mode desktop width(),desktop height(),32
hide mouse
autocam off
`Constants
cam = 0
charObj = 1
weapObj = 1000
weapLimb = 1001
charStrafeSpeed# = 3
charMoveSpeed# = 4
charMX = 0
charMY = 0
weapOffsetX# = 2
weapOffsetY# = -1
weapOffsetZ# = 3
camC = 11
crossImg = 1
dummyObj = 31
dummyLimb = 0
dummyOffsetX# = 0
dummyOffsety# = 0
dummyOffsetZ# = 1000
`Charecter setup
make object box charObj,10,50,10
position object charObj,0,0,0
`crosshair
load image "cross.png",crossIMG
`Reference
make object box 9000,10,50,10
make matrix 1,1000,1000,25,25
position matrix 1,-500,-25,-500
sc_setupobject 9000,1,0
for i = 1 to 50
make object box i+1000,10,50,10
position object i+1000,rnd(100),rnd(100),rnd(100)
sc_setupobject i+1000,1,2
NEXT
`Cam obj
make object sphere camC,10
`Weapon
make object box weapObj,0.5,0.5,5
make mesh from object weapObj,weapObj
delete object weapObj
weapLimb = append limb (camC,weapObj)
offset limb camC,weapLimb,weapOffsetX#,weapOffsetY#,weapOffsetZ#
`shooting object
make object box dummyObj,1,1,1
make mesh from object dummyObj,dummyObj
delete object dummyObj
dummyLimb = append limb (camC,dummyObj)
offset limb camC,dummyLimb,dummyOffsetX#,dummyOffsetY#,dummyOffsetZ#
`Main loop
do
`cross hair
paste image crossIMG,screen width()/2-image width(crossIMG)/2,screen height()/2-image height(crossIMG)/2,1
`Movement
if keystate(30) = 1
move object left charObj,charStrafeSpeed#
ENDIF
if keystate(31) = 1
move object charObj,-charMoveSpeed#
ENDIF
if keystate(32) = 1
move object right charObj,charStrafeSpeed#
ENDIF
if keystate(17) = 1
move object charObj,charMoveSpeed#
ENDIF
if shiftkey() = 1
charMoveSpeed# = 7
else
charMoveSpeed# = 4
ENDIF
`updating variables
charX# = object position x(charObj)
charY# = object position y(charObj)
charZ# = object position z(charObj)
charAngleX# = object angle x(charObj)
charAngley# = object angle y(charObj)
charAnglez# = object angle z(charObj)
charMY# = charMY# + mousemovey()
charMX# = charMX# + mousemovex()
`camera setup
position camera cam,charX#,charY#,charZ#
rotate camera cam,charMY#,charAngleY#,charAngleZ#
rotate object charObj,0,charMX#,0
position object camC,camera position x(0),camera position y(0),camera position z(0)
rotate object camC,camera angle x(0),camera angle y(0),camera angle z(0)
camRotX# = camera angle x(cam)
camRotY# = camera angle y(cam)
camRotZ# = camera angle z(cam)
camX# = camera position x(0)
camY# = camera position y(0)
camZ# = camera position z(0)
dummyLimbx# = limb position x(camC,dummyLimb)
dummyLimby# = limb position y(camC,dummyLimb)
dummyLimbz# = limb position z(camC,dummyLimb)
if mouseclick() = 1
objHit = sc_raycast(0,camX#,camY#,camZ#,dummyLimbX#,dummyLimbY#,dummyLimbZ#,1)
if objHit > 0
hide object objHit
endif
ENDIF
`Update
sync
LOOP
life is short but so am i