Hi I Just got Dark Physics so I'm kind of new to the commands and structure.
I'm trying to make a third person shooter but i'm getting a bit confused about how to get the collision to work, specifically how to get the DYN CAPSULE and the ground TMesh to intereact.
I want the player object to run around on the terrain without falling through.
Rem ***** Main Source File *****
Rem Project: FRagem2
Rem Created: Saturday, January 11, 2014
Rem ***** Main Source File *****
sync on
sync rate 60
autocam off
set camera range 0.5, 100000
hide mouse
set ambient light 30
map=1
player1=3
player2=4
player1capsule=5
player2capsule=6
mapimage=1
player1texture=2
player2texture=3
gun1image=4
framespeed=40
player1speed#=0.5
GRAVITY# = 2.0
load object "Terrain1\map1.x",map
load image "Terrain1\texture.bmp",mapimage
scale object map,1000,1000,1000
texture object map,mapimage
position object map,0,0,0
`****************************** Create Player 1
load object "player1\player.x",player1
load image "Player1\playercanada.dds",player1texture
scale object player1,50,50,50
texture object player1,player1texture
position object player1,-736,0,-528
set object speed player1,40
DYN START
DYN SET PARAMETER NX_VISUALIZATION_SCALE, 1.0
DYN SET PARAMETER NX_VISUALIZE_COLLISION_SHAPES, 1.0
DYN MAKE CONTROLLER CAPSULE player1, object size y(player1, 1) / 2, 45, 10
DYN CONTROLLER CAPSULE SET HEIGHT player1, object size y(player1, 1) * 0.9
DYN LOAD TRIANGLE MESH "Terrain1\map1.TMesh", 1
DYN MAKE TRIANGLE MESH map, 1
//...
//...
DYN SIMULATE
do
DYN FETCH RESULTS
DYN UPDATE
DYN DEBUG RENDER
` DYN CONTROLLER SET POSITION player1,object position x(player1),object position y(player1),object position z(player1)
DYN SIMULATE
gosub Info
gosub player1mouseview
gosub player1move
sync
loop
DYN FETCH RESULTS
DYN STOP
end
player1mouseview:
`*********************************** outside view ******
` position camera object position x(player1),object position y(player1)+5,object position z(player1)+15
`********************************** follow view *******************
position camera object POSITION x(player1),object position y(player1)+30,Object POSITION z(player1)+75
`********************************************************
point camera object position x(player1),object position y(player1), object position z(player1)
Oldplayer1AngleY# = player1AngleY#
Oldplayer1AngleX# = player1AngleX#
player1AngleY# = wrapvalue ( player1AngleY# + mousemovex ( ) * 0.4 )
player1AngleX# = wrapvalue ( player1AngleX# + mousemovey ( ) * 0.4 )
yrotate object player1,curveangle( player1AngleY#,Oldplayer1AngleY#, 24 )
xrotate camera curveangle ( player1AngleX#, Oldplayer1AngleX#, 24 )
return
player1move:
//-- Up/Down
onGround = collisionFlag && NXCC_COLLISION_DOWN
//-- Gravity
if onGround
yDisplacement# = 0.0
else
yDisplacement# = yDisplacement# - GRAVITY#
endif
if keystate(17) then forward=1 `forward
if keystate(31) then backward=1 `backwards
if keystate(30) then right=1 `stride right
if keystate(32) then left=1 `stride left
if keystate(17) and keystate(32) then forwardright=1
if keystate(17) and keystate(30) then forwardleft=1
if keystate(31) and keystate(30) then backwardright=1
if keystate(31) and keystate(32) then backwardleft=1
if forward=0 and backward=0 and right=0 and left=0 and forwardright=0 and forwardleft=0 and backwardright=0 and backwardleft=0 then idle=1
if idle=1
SET OBJECT SPEED player1,framespeed/3
loop object player1,3722,3777
`loop object player1,1490,1513
idle=0
endif
if forwardright=1 `Forwards and Right
move object player1,-player1speed#/6
move object left player1,player1speed#/6
SET OBJECT SPEED player1,framespeed
loop object player1,1560,1578
gosub setmoveto0
endif
if forwardleft=1 `Forwards and Left
move object right player1,player1speed#/6
move object player1,-player1speed#/6
SET OBJECT SPEED player1,framespeed
loop object player1,1540,1559
gosub setmoveto0
endif
if backwardleft=1 `Backward and Left
move object left player1,player1speed#/6
move object player1,player1speed#/6
SET OBJECT SPEED player1,framespeed/2
loop object player1,1560,1578
gosub setmoveto0
endif
if backwardright=1 `Backward and Right
move object right player1,player1speed#/6
move object player1,player1speed#/6
SET OBJECT SPEED player1,framespeed/2
loop object player1,1540,1559
gosub setmoveto0
endif
if forward=1 `forward
move object player1,-player1speed#
SET OBJECT SPEED player1,framespeed
loop object player1,1970,1986
gosub setmoveto0
endif
if backward=1 `backwards
move object player1,player1speed#/6
SET OBJECT SPEED player1,-framespeed/2
loop object player1,1970,1986
gosub setmoveto0
endif
if right=1 `stride right
move object right player1,player1speed#/5
SET OBJECT SPEED player1,framespeed
loop object player1,1540,1559
gosub setmoveto0
endif
if left=1 `stride left
move object left player1,player1speed#/5
SET OBJECT SPEED player1,framespeed
loop object player1,1560,1578
gosub setmoveto0
endif
return
setmoveto0:
forwardright=0
forward=0
backward=0
right=0
left=0
forwardright=0
forwardleft=0
backwardleft=0
backwardright=0
return
Info:
SET CURSOR 0,10
Print "Player 1 Position X Coordinates " + Str$(object position x(Player1))
Print "Player 1 Position z Coordinates " + Str$(object position z(Player1))
print "fps = " + str$ ( screen fps ( ) )
Print "Player 1 Frame" +STR$(fra)
return
"There are no perfect ideas only perfect intentions"