Collisions and animated entities

Blitz3D Forums/Blitz3D Programming/Collisions and animated entities

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

Try this, first try with the animation on then comment out the animate command...


; Collisions Example
; ------------------

Graphics3D 640,480
SetBuffer BackBuffer()

; Set collision type values
type_ground=1
type_character=2
type_scenery=3

camera=CreateCamera()
RotateEntity camera,45,0,0
PositionEntity camera,0,15,-10

light=CreateLight()
RotateEntity light,45,0,0

; Create cube 'ground'
cube=CreateCube()
ScaleEntity cube,10,10,10
EntityColor cube,0,127,0
EntityType cube,type_ground
PositionEntity cube,0,-5,0

; Create sphere 'character'
sphere=CreateSphere( 32 )
EntityColor sphere,127,0,0
EntityRadius sphere,1
EntityType sphere,type_character
PositionEntity sphere,0,7,0

; Enable collisions between type_character and type_ground
Collisions type_character,type_ground,2,2


; Create cube 'scenery'
cube=CreateCube()
ScaleEntity cube,2,2,2
EntityColor cube,0,0,255
;EntityRadius cube,2
;EntityBox cube,-2,-2,-2,4,4,4
EntityType cube,type_scenery
RotateEntity cube,0,45,0
PositionEntity cube,4,7,4

	EntityColor cube, 255,0, 0
	
	SetAnimKey cube,0,0,1,1

	TurnEntity cube,0,90,True
	SetAnimKey cube,90,0,1,1

	TurnEntity cube,0,90,0,True
	SetAnimKey cube,180,0,1,1
	
	TurnEntity cube,0,90,0,True
	SetAnimKey cube,270,0,1,1

	TurnEntity cube,0,90,0,True
	SetAnimKey cube,360,0,1,1
	
	AddAnimSeq cube, 360
;	Animate cube,1


; Set collision method and response values
method=2
response=2

method_info$="ellipsoid-to-polygon"
response_info$="slide1"

While Not KeyDown( 1 )

x#=0
y#=0
z#=0

If KeyDown( 203 )=True Then x#=-0.1
If KeyDown( 205 )=True Then x#=0.1
If KeyDown( 208 )=True Then z#=-0.1
If KeyDown( 200 )=True Then z#=0.1

MoveEntity sphere,x#,y#,z#
MoveEntity sphere,0,-0.02,0 ; gravity

; Change collision method
If KeyHit( 50 )=True
method=method+1
If method=4 Then method=1
If method=1 Then method_info$="ellipsoid-to-sphere"
If method=2 Then method_info$="ellipsoid-to-polygon"
If method=3 Then method_info$="ellipsoid-to-box"
EndIf

; Change collision response
If KeyHit( 19 )=True
response=response+1
If response=4 Then response=1
If response=1 Then response_info$="stop"
If response=2 Then response_info$="slide1"
If response=3 Then response_info$="slide2"
EndIf

; Enable collisions between type_character and type_scenery
Collisions type_character,type_scenery,method,response

; Perform collision checking
UpdateWorld

RenderWorld

Text 0,0,"Use cursor keys to move sphere"
Text 0,20,"Press M to change collision Method (currently: "+method_info$+")"
Text 0,40,"Press R to change collision Response (currently: "+response_info$+")"
Text 0,60,"Collisions type_character,type_scenery,"+method+","+response

Flip

Wend

End