human capabilities

Blitz3D Forums/Blitz3D Beginners Area/human capabilities

In my 3d game the camera is the player. I want it to have all the capabilities of a normal human being.At the moment it can float up to the ceiling of my level, but this is not natural. How can I prevent this? I want it to be able to climb steps but only to be able to jump a foot or so. Thanks.

In the 3D samples directory of your main Blitz3D directory do you have a folder called 'zenith' which leads to 'scare.bb'?

You may or may not have this - this is one of the original demos shipped with B3D, but it may not be included in your version.

Oh god, I remember writing that in 2001 >_>

You can also check out example code in the Code Archives: http://www.blitzmax.com/codearcs/codearcs.php

Basically need to apply gravity to the camera by continuously moving it down the Y axis a small amount. Once you learn how to do that you can expand on it by stopping the gravity force when the player is touching the ground.

Hi, I'm pretty new to Blitz3D... but I've made a FP camera "player"... and it climbs steps and "jumps"... dunno if this code is any use to you?

; Simple FP walker by Quantum

Graphics3D 800,600,32,1
SetBuffer BackBuffer()

;----loading screen And background music (Delete If Not required... remove `;` if required)

;music=LoadSound("theme.mp3") ; ENTER LINK TO REQUIRED AUDIO TRACK
;If music
; LoopSound music
; mc=PlaySound(music)
;EndIf


;loading screen image

;logo=LoadImage("loadpic.jpg") ; ENTER LINK TO REQUIRED LOADING IMAGE
;MidHandle logo
;Cls
;DrawBlock logo,GraphicsWidth()/2,GraphicsHeight()/2
;Flip

;Delay 6000

;-------------------------------------------------------------------


frameTimer=CreateTimer(30) ; FRAME RATE LIMITER PART1 of 2

Collisions 1,2,2,2

player=CreatePivot()
PositionEntity player,45,-8,-800 ;PositionEntity view,45,55,-250
EntityRadius player,50,50 ; set player sphere radius to enable step climbing
EntityType player,1

camera=CreateCamera(player)
CameraRange camera,10,15000 ; clipping & view distance
CameraClsColor camera,255,0,0
PositionEntity camera,0,1,0
TranslateEntity camera,0,60,0 ; eyes height


AmbientLight 100,100,100

mesh=LoadMesh("temple1.b3d") ; ENTER LINK TO SCENERY MODEL
UpdateNormals mesh

sky=LoadMesh("BigCumulus_day_SPHERE.x") ; ENTER LINK TO SKYBOX (DELETE IF NOT REQUIRED)
RotateEntity sky,0,0,0
ScaleEntity sky,495,495,495
PositionEntity sky,0,0,150



tree=LoadMesh("tree1.b3d") ; VARIOUS SCENERY OBJECTS (DELETE IF NOT REQUIRED)
RotateEntity tree,0,0,0
ScaleEntity tree,4,4,4
PositionEntity tree,422,-130,-541
EntityType tree,2 ; make tree collidable



tree2=LoadMesh("tree1.b3d") ; VARIOUS SCENERY OBJECTS (DELETE IF NOT REQUIRED)
RotateEntity tree2,0,0,0
ScaleEntity tree2,4,4,4
PositionEntity tree2,-400,-130,-541
EntityType tree2,2 ; make tree collidable

;------end block

EntityFX mesh,1
EntityType mesh,2

sp#=1.25......... PLAYER MOVEMENT SPEED
ey#=EntityY(player)

; ----------------------------------------MAINLOOP----------------------------------------

While Not KeyHit(1)

If KeyHit(17) ; W key for wire frame view
wire=1-wire
WireFrame wire
EndIf


yv#=EntityY(player)-ey
ey=EntityY(player)

If KeyHit(57) Then yv=10 ; Jump gravity... SPACE TO JUMP

MoveEntity player,0,yv-1.5,0 ; gravity... Adjust to make stair climbing more realistic



p_angle#=(p_angle#-mxs#) ; angle...
If p_angle#>360 Then
p_angle#=p_angle#-360
p_smooth_angle#=p_smooth_angle#-360
EndIf
If p_angle#<0 Then
p_angle#=p_angle#+360
p_smooth_angle#=p_smooth_angle#+360
EndIf

c_angle#=(c_angle#+mys#)
If c_angle#>360 Then
c_angle#=c_angle#-360
c_smooth_angle#=c_smooth_angle#-360
EndIf
If c_angle#<0 Then
c_angle#=c_angle#+360
c_smooth_angle#=c_smooth_angle#+360
EndIf

p_smooth_angle#=p_smooth_angle#-((p_smooth_angle#-p_angle#)/2.5)
c_smooth_angle#=c_smooth_angle#-((c_smooth_angle#-c_angle#)/2.5)

RotateEntity player,0,p_smooth_angle#,0
RotateEntity camera,c_smooth_angle#,0,0

If KeyDown(200) Then MoveEntity player,0,0,sp
If KeyDown(208) Then MoveEntity player,0,0,-sp
If MouseDown(2) Then MoveEntity player,0,0,sp ; right mouse button pressed - MOVE FORWARD
If MouseDown(1) Then MoveEntity player,0,0,-sp ; left mouse button pressed - MOVE BACKWARD

UpdateWorld
RenderWorld

Text 0,48,"Press `Esc` to Quit... `SPACE` to jump"
Text 0,16,"Triangles Rendered:"+TrisRendered()
Text 0,32,"Camera Position: "+EntityX(camera,1)+" "+EntityY(camera,1)+" "+EntityZ(camera,1)
mxs#=MouseXSpeed()/4.0
mys#=MouseYSpeed()/4.0
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
Flip

WaitTimer(frameTimer) ; FRAME RATE LIMITER PART2 of 2


Wend
End