RUCCUS, first off, thank you so much. Your tutorials have helped me heaps. I'm making a (wait for it) FPS lol, using your tuts and sparky's collision dll... you're probably going "Well, duh!" right now so I'll get to the point.
A gravity question. Basically I've implemented a gravity system from another user, but when I try to go up a ramp onto a platform, the gravity will bypass the collision checking. Im wondering if there's a way to differ a natural incline and a mouse look incline and stop it from happening.
'My first FPS
'Created on 17 - 6 - 2007
'By James
'Setting client options
SYNC ON
SYNC RATE 0
HIDE MOUSE
'Object creation
MAKE OBJECT SPHERE 1, 50 : COLOR OBJECT 1, RGB(000, 255, 000) : POSITION OBJECT 1, 0, -5, 0
MAKE OBJECT SPHERE 2, 50 : COLOR OBJECT 2, RGB(255, 000, 000) : POSITION OBJECT 2, 130, -5, 0
MAKE OBJECT BOX 3, 15, 20, 50 : COLOR OBJECT 3, RGB(000, 255, 255) : POSITION OBJECT 3, -80, -20, 0
LOAD OBJECT "Media/Basic Map.x", 4 : POSITION OBJECT 4, 0, -30, 0 : SCALE OBJECT 4, 1000, 1000, 1000
SC_SETUPOBJECT 4, 0, 0
'Limb Making
MAKE OBJECT SPHERE 9999, 30
MAKE MESH FROM OBJECT 1, 9999
DELETE OBJECT 9999
ADD LIMB 1, 1, 1
OFFSET LIMB 1, 1, 0, 0, 500
HIDE LIMB 1, 1
ADD LIMB 1, 2, 1
OFFSET LIMB 1, 2, 0, 0, 0
HIDE LIMB 1, 2
DELETE MESH 1
'Defining Variables
EnemyHP# = 5000
MaxAmmo# = 1000
Ammo# = 1000
Clips# = 3
MaxClips# = 3
WalkSpeed# = 1
Gravity# = 12
'Controls
DO
'Positioning the camera
POSITION CAMERA OBJECT POSITION X (1), OBJECT POSITION Y(1) + 20, OBJECT POSITION Z(1)
'==========================
'Defining Speed
IF SHIFTKEY() = 1 THEN WalkSpeed# = 2
IF SHIFTKEY() = 0 THEN Walkspeed# = 1
'Define Old Co-ordinates before moving.
OX# = OBJECT POSITION X(1)
OY# = OBJECT POSITION Y(1)
OZ# = OBJECT POSITION Z(1)
'==========================
'Movement controls
IF KEYSTATE(17) = 1 THEN MOVE OBJECT 1, WalkSpeed#
IF KEYSTATE(31) = 1 THEN MOVE OBJECT 1, -Walkspeed#
IF KEYSTATE(30) = 1 THEN MOVE OBJECT LEFT 1, WalkSpeed# / 2
IF KEYSTATE(32) = 1 THEN MOVE OBJECT RIGHT 1, WalkSpeed# / 2
'==========================
'Store New Co-ordinates after moving.
NX# = OBJECT POSITION X(1)
NY# = OBJECT POSITION Y(1)
NZ# = OBJECT POSITION Z(1)
'==========================
'Call the Sliding Collision Functions
SlidingCollision(OX#, OY#, OZ#, NX#, NY#, NZ#, 25, 1, 4)
'==========================
'Jumping Code
IF SPACEKEY() = 1 AND JUMPING# = 0 THEN JUMP# = 1
IF JUMP# = 1
GROUND# = OBJECT POSITION Y(1)
JUMP_SPEED# = 1
JUMPING# = 1
JUMP# = 0
ENDIF
IF JUMPING# = 1
DEC JUMP_SPEED#, .025
POSITION OBJECT 1, OBJECT POSITION X(1), OBJECT POSITION Y(1) + JUMP_SPEED#, OBJECT POSITION Z(1)
IF OBJECT POSITION Y(1) <= GROUND# THEN JUMPING# = 0
ENDIF
'==========================
'Call Gravity Functions
IF JUMPING# = 0 THEN Gravity()
'Camera Looking Controls
CAMY# = CAMY# + MOUSEMOVEX() * .1
CAMX# = CAMX# + MOUSEMOVEY() * .1
IF CAMX# > 90 AND CAMX# < 135 THEN CAMX# = 90
IF CAMX# > 225 AND CAMX# < 270 THEN CAMX# = 270
YROTATE CAMERA CAMY#
XROTATE CAMERA CAMX#
YROTATE OBJECT 1, CAMY#
XROTATE OBJECT 1, CAMX#
'==========================
'Shooting
IF KEYSTATE(19) = 0 AND MOUSECLICK() = 1
IF Ammo# > 0
DEC Ammo#, 1
ENDIF
IF OBJECT EXIST(2) = 1
IF Ammo# > 0
IF INTERSECT OBJECT (2, LIMB POSITION X (1, 1), LIMB POSITION Y (1, 1), LIMB POSITION Z (1, 1), OBJECT POSITION X (1), OBJECT POSITION Y (1), OBJECT POSITION Z (1)) > 0
DEC EnemyHP#, 1
ENDIF
ENDIF
ENDIF
ENDIF
'==========================
'Enemy Death Checking
IF EnemyHP# = 0
IF OBJECT EXIST(2) = 1
DELETE OBJECT 2
ENDIF
ENDIF
'==========================
'Picking Up Ammo Boxes
IF OBJECT EXIST(3) = 1
IF Ammo# < MaxAmmo# AND INTERSECT OBJECT (3, OBJECT POSITION X(1), OBJECT POSITION Y(1)-25, OBJECT POSITION Z(1), OBJECT POSITION X(1), OBJECT POSITION Y(1), OBJECT POSITION Z(1)) > 0
INC Clips#, (MaxClips# - Clips#)
INC Ammo#, (MaxAmmo# - Ammo#)
DELETE OBJECT 3
ENDIF
ENDIF
'==========================
'Reloading
IF MOUSECLICK() = 0 AND KEYSTATE(19) = 1 AND Ammo# < MaxAmmo# AND Clips# > 0
Reload# = 1
ENDIF
IF Reload# = 1 THEN INC Time#, .001
IF Time# >= 1 THEN Ammo# = MaxAmmo# : DEC Clips#, 1 : Time# = 0 : Reload# = 0
'==========================
IF OBJECT EXIST(2) = 1 THEN CENTER TEXT OBJECT SCREEN X(2), OBJECT SCREEN Y(2) - 70, "Enemy HP: " +str$(EnemyHP#)
'HUD
TEXT 0, SCREEN HEIGHT() - 50, "Ammo: " +str$(Ammo#)
TEXT 0, SCREEN HEIGHT() - 40, "Clips: " +str$(Clips#)
CIRCLE SCREEN WIDTH() / 2, SCREEN HEIGHT() / 2, 5
IF Reload#=1 THEN CENTER TEXT SCREEN WIDTH()/2, SCREEN HEIGHT()/2, "Reloading..."
'==========================
SYNC
LOOP
FUNCTION SlidingCollision(X1#, Y1#, Z1#, X2#, Y2#, Z2#, Radius#, Dyn, Obj)
C = sc_SphereSlide (Obj, X1#, Y1#, Z1#, X2#, Y2#, Z2#, Radius#, 0)
IF C > 0
CX# = sc_getCollisionSlideX()
CY# = sc_getCollisionSlideY()
CZ# = sc_getCollisionSlideZ()
POSITION OBJECT Dyn, CX#, CY#, CZ#
ENDIF
ENDFUNCTION
FUNCTION Gravity()
OLDX# = OBJECT POSITION X(1)
OLDY# = OBJECT POSITION Y(1)
OLDZ# = OBJECT POSITION Z(1)
POSITION OBJECT 1, OLDX#, OLDY# - Gravity#, OLDZ#
NEWX# = OBJECT POSITION X(1)
NEWY# = OBJECT POSITION Y(1)
NEWZ# = OBJECT POSITION Z(1)
OnGround = sc_SphereSlide (4, OLDX#, OLDY#, OLDZ#, NEWX#, NEWY#, NEWZ#, 25, 1)
IF OnGround > 0 THEN CY# = sc_getCollisionSlideY()
POSITION OBJECT 1, NEWX#, CY#, NEWZ#
ENDFUNCTION
DELETE MEMBLOCK 1
Attached is the media file.
Edit Thanks in advance.