tilting

Blitz3D Forums/Blitz3D Beginners Area/tilting

Say when I go up a ramp I want it so the model tilts to be level with the ramp at the moment it jsut pushs forward can any one help

Assuming you're turning the model using turnentity you could try something like this (not tested I'm afraid but should work) ...

You may have to adjust some of the values but make sure the ramp and ground are pickable.

{code}
unused = LinePick ( EntityX(model,True),EntityY(model,True)+10,EntityZ(model,True),0,-20,0,.2 )
y#=PickedY()
TranslateEntity model,0,y-EntityY(model)+.1,0
nx#=PickedNX():ny#=PickedNY():nz#=PickedNZ()
AlignToVector model,nx,ny,nz,2,.25
{code/}

umm I don't thnk this would work

I think I'll try to exsplain better

Say I have a ramp like this
...
.....
........
...........

and I have a guy come into it

...
.....______________GUY
........______...............
...........___...............
and when he comes up it I want him to tilt
...
.....__..G
........__..U
...........__..Y

so I am not sure if that helps but there u go

ok that really doesn't look like it helps here's a key


__ nothing
....board or ramp

Have you tried it? It works for me. If this is not what your after look at the car demo.

Try this (forgot how to put code in a box!!)....

Graphics3D 640,480,16,1

light=CreateLight()
gravity# = - 0.5

;guy
guy=CreateCube()
PositionMesh guy,0,1,0
Scaleentity guy,1,1,2
;camera
camera=CreateCamera(guy)
PositionEntity camera,0,5,-10
;plane
plane=CreatePlane()
EntityColor plane,0,0,255
EntityPickMode plane,2
EntityAlpha plane,.5
;ramp
ramp=CreateCube()
ScaleEntity ramp,4,.5,20
RotateEntity ramp,30,180,0
PositionEntity ramp,0,0,50
EntityColor ramp,255,0,0
EntityPickMode ramp,2

;main routine

While Not KeyDown(1)

TurnEntity guy,0,(KeyDown(203)-KeyDown(205))*5,0
MoveEntity guy,0,0,KeyDown(200)-KeyDown(208)*.5

unused = LinePick ( EntityX(guy),EntityY(guy)+1,EntityZ(guy),0,-200,0 )
y#=PickedY()
nx#=PickedNX()
ny#=PickedNY()
nz#=PickedNZ()
AlignToVector guy,nx,ny,nz,2,.25
TranslateEntity guy,0,gravity,0
If EntityY(guy) < y TranslateEntity guy,0,y-EntityY(guy),0

PointEntity camera,guy

RenderWorld()
Flip

Wend

it did work sorry by any chance could you please exsplain it

does any one know how to help

StevieG's solution works fine. I used it for a car demo i was doing. It basicaly aligns the axis's of the car to the collision normal. You don't even need to use a pick command. This just uses collison normals

Use arrow keys to move block into the slope. It will align to the ramp

Graphics3D 800,600
SetBuffer BackBuffer()

light=CreateLight()
ground=CreatePlane()

camera=CreateCamera()

box=CreateCube()
PositionEntity box,0,2,0
PositionEntity camera,0,6,-20
RotateEntity ground,0,0,30
EntityType ground,2
EntityType box,1
Collisions 1,2,2,2


While Not KeyHit(1)

If KeyDown(200) Then MoveEntity box,0,0.1,0
If KeyDown(208) Then MoveEntity box,0,-0.1,0
If KeyDown(205) Then MoveEntity box,0.1,0,0
If KeyDown(203) Then MoveEntity box,-0.1,0,0
If KeyDown(2) Then TranslateEntity box,0,0.1,0
If EntityCollided(box,2) Then
	AlignToVector box,CollisionNX(box,1),CollisionNY(box,1),CollisionNZ(box,1),2
	temp=CollisionNZ(box,1)
	col=1
Else
	col=0
End If



UpdateWorld()
RenderWorld()

Text 0,0,"normalx="+temp
Flip
Wend
End


THx for the help ross it works now!