Anyeasy way to to align a ship
Blitz3D Forums/Blitz3D Beginners Area/Anyeasy way to to align a ship
| ||
The game im designing is a space racing game in a halfpipe track fully3d includes loops stepdrops and bends to mapeditor is sorted now problems The map entity is called Track and contains 360 segments so collision and texturing becomes more flexible The Ship entity is called player1 and has a staring position of PositionEntity player1,0,-9,20,1 and is rotated TurnEntity ball,0,90,0 to face the track accelerate will always propel player1 in a possitive z axis using movenetity because of the largesize of the tris and curverture of the map standard collision aint working verywell I was wondering if anybody has done something similar or knows how to keep the player aligned to the track in x,y,z,pitch,yaw,roll as i wish to be able to fly upsidedown to add more gameplay as all ive done so far is noway near good enough |
| ||
;;try running this code stuck on collisions might need to ;;increase the number of tris taken out the collision i did due to it being pants:( Graphics3D 1024,768,32,1 AntiAlias 1 Dim Vertbox(8) Dim Vert1x#(721) Dim Vert2x#(721) Dim Vert3x#(721) Dim Vert4x#(721) Dim Vert5x#(721) Dim Vert6x#(721) Dim Vert7x#(721) Dim Vert8x#(721) Dim Vert1y#(721) Dim Vert2y#(721) Dim Vert3y#(721) Dim Vert4y#(721) Dim Vert5y#(721) Dim Vert6y#(721) Dim Vert7y#(721) Dim Vert8y#(721) Dim Vert1z#(721) Dim Vert2z#(721) Dim Vert3z#(721) Dim Vert4z#(721) Dim Vert5z#(721) Dim Vert6z#(721) Dim Vert7z#(721) Dim Vert8z#(721) Global Ship,balll,ballr,ballf,ballb,ballpiv,temp1,temp2,dist# Global box,x,y,z,track,camera Global boxpivot,brush1,player,ball,ballpiv1,ballpiv2 brush1=CreateBrush(25,70,200) BrushBlend brush1,4 x=10 y=10 z=10 camera=CreateCamera() light=CreateLight() Create_Vertbox Create_vertdata Create_vert_mesh createship SetBuffer BackBuffer() While Not KeyHit(1) updatecam UpdateWorld RenderWorld Text 100,100,"trirendered+"+TrisRendered() Flip 0 Wend End Function Create_Vertbox() Vertbox(1)=CreateCube() PositionEntity Vertbox(1),0,0,-1 Vertbox(2)=CreateCube() PositionEntity Vertbox(2),0,1,-4 Vertbox(3)=CreateCube() PositionEntity Vertbox(3),0,3,-6 Vertbox(4)=CreateCube() PositionEntity Vertbox(4),0,6,-7 Vertbox(5)=CreateCube() PositionEntity Vertbox(5),0,0,1 Vertbox(6)=CreateCube() PositionEntity Vertbox(6),0,1,4 Vertbox(7)=CreateCube() PositionEntity Vertbox(7),0,3,6 Vertbox(8)=CreateCube() PositionEntity Vertbox(8),0,6,7 Boxpivot=CreatePivot() PositionEntity boxpivot,0,0,15 TurnEntity boxpivot,0,90,0 For times=1 To 8 EntityParent Vertbox(times),boxpivot Next End Function Function alignbox() End Function Function create_vertdata() For a=1 To 361 collect_vertdata(a) If a<46 Then TurnEntity boxpivot,0,-1,0,1 If a>45 And a<91 Then TurnEntity boxpivot,1,-1,0,1 If a>90 And a<136 Then TurnEntity boxpivot,-1,1,0,1 If a>135 And a<181 Then TurnEntity boxpivot,0,-1,0,1 MoveEntity boxpivot,0,0,4 Next End Function Function collect_vertdata(a) Vert1x(a)=EntityX(vertbox(1),1) Vert1y(a)=EntityY(vertbox(1),1) Vert1z(a)=EntityZ(vertbox(1),1) Vert2x(a)=EntityX(vertbox(2),1) Vert2y(a)=EntityY(vertbox(2),1) Vert2z(a)=EntityZ(vertbox(2),1) Vert3x(a)=EntityX(vertbox(3),1) Vert3y(a)=EntityY(vertbox(3),1) Vert3z(a)=EntityZ(vertbox(3),1) Vert4x(a)=EntityX(vertbox(4),1) Vert4y(a)=EntityY(vertbox(4),1) Vert4z(a)=EntityZ(vertbox(4),1) Vert5x(a)=EntityX(vertbox(5),1) Vert5y(a)=EntityY(vertbox(5),1) Vert5z(a)=EntityZ(vertbox(5),1) Vert6x(a)=EntityX(vertbox(6),1) Vert6y(a)=EntityY(vertbox(6),1) Vert6z(a)=EntityZ(vertbox(6),1) Vert7x(a)=EntityX(vertbox(7),1) Vert7y(a)=EntityY(vertbox(7),1) Vert7z(a)=EntityZ(vertbox(7),1) Vert8x(a)=EntityX(vertbox(8),1) Vert8y(a)=EntityY(vertbox(8),1) Vert8z(a)=EntityZ(vertbox(8),1) End Function Function Create_vert_mesh() track=CreateMesh() For a=1 To 360 surf=CreateSurface(track,brush1) v0=AddVertex(surf,Vert1x(a),Vert1y(a),Vert1z(a),1,1) v1=AddVertex(surf,Vert2x(a),Vert2y(a),Vert2z(a),1,0) v2=AddVertex(surf,Vert3x(a),Vert3y(a),Vert3z(a),1,1) v3=AddVertex(surf,Vert4x(a),Vert4y(a),Vert4z(a),1,0) v4=AddVertex(surf,Vert5x(a),Vert5y(a),Vert5z(a),1,0) v5=AddVertex(surf,Vert6x(a),Vert6y(a),Vert6z(a),1,1) v6=AddVertex(surf,Vert7x(a),Vert7y(a),Vert7z(a),1,0) v7=AddVertex(surf,Vert8x(a),Vert8y(a),Vert8z(a),1,1) v8=AddVertex(surf,Vert1x(a+1),Vert1y(a+1),Vert1z(a+1),0,1) v9=AddVertex(surf,Vert2x(a+1),Vert2y(a+1),Vert2z(a+1),0,0) v10=AddVertex(surf,Vert3x(a+1),Vert3y(a+1),Vert3z(a+1),0,1) v11=AddVertex(surf,Vert4x(a+1),Vert4y(a+1),Vert4z(a+1),0,0) v12=AddVertex(surf,Vert5x(a+1),Vert5y(a+1),Vert5z(a+1),0,0) v13=AddVertex(surf,Vert6x(a+1),Vert6y(a+1),Vert6z(a+1),0,1) v14=AddVertex(surf,Vert7x(a+1),Vert7y(a+1),Vert7z(a+1),0,0) v15=AddVertex(surf,Vert8x(a+1),Vert8y(a+1),Vert8z(a+1),0,1) t0=AddTriangle(surf,v8,v9,v0) t1=AddTriangle(surf,v9,v1,v0) t2=AddTriangle(surf,v9,v10,v1) t3=AddTriangle(surf,v10,v2,v1) t4=AddTriangle(surf,v10,v11,v2) t5=AddTriangle(surf,v11,v3,v2) t6=AddTriangle(surf,v8,v0,v4) t7=AddTriangle(surf,v12,v8,v4) t8=AddTriangle(surf,v12,v4,v5) t9=AddTriangle(surf,v13,v12,v5) t10=AddTriangle(surf,v13,v5,v6) t11=AddTriangle(surf,v14,v13,v6) t12=AddTriangle(surf,v14,v6,v7) t13=AddTriangle(surf,v15,v14,v7) Next UpdateNormals track PositionEntity track,0,-12,20 FlipMesh track For times=1 To 8 FreeEntity vertbox(times) Next End Function Function updatecam() PickedX() If MouseDown(1) Then MoveEntity ship,-.01,0,0 If MouseDown(2) Then MoveEntity ship,.01,0,0 If KeyDown(44) Then TurnEntity ship,0,.1,0 If KeyDown(45) Then TurnEntity ship,0,-.1,0 MoveEntity Ship,0,0,0.01 PositionEntity camera,EntityX(ship,1),EntityY(ship,1),EntityZ(ship,1) RotateEntity camera,EntityPitch(ship,1),EntityYaw(ship,1),EntityRoll(ship,1) MoveEntity camera,0,6,-10 PointEntity camera,ship End Function Function CreateShip() Ship=CreateSphere(2) ballf=CreateSphere(2) ballb=CreateSphere(2) balll=CreateSphere(2) ballr=CreateSphere(2) ballpiv=CreatePivot() PositionEntity Ship,0,-9,21,1 PositionEntity ballf,0,-9,23,1 PositionEntity ballb,0,-9,19,1 PositionEntity balll,-2,-9,21,1 PositionEntity ballr,2,-9,21,1 PositionEntity ballpiv,0,-9,21,1 RotateEntity ballr,0,90,0,1 RotateEntity balll,0,90,0,1 RotateEntity ballf,0,90,0,1 RotateEntity ballb,0,90,0,1 EntityParent ballpiv,Ship EntityParent ballf,ballpiv EntityParent ballb,ballpiv EntityParent balll,ballpiv EntityParent ballr,ballpiv TurnEntity ship,0,90,0,1 EntityPickMode track,2 End Function |
| ||
Would something like this work for you?Graphics3D 640, 480, 0, 2 cam = CreateCamera() MoveEntity cam, 0,0, -10 light = CreateLight() sphere1 = CreateSphere() EntityType sphere1, 1 EntityRadius sphere1, 1 connector1 = CreateCube(sphere1) ScaleEntity connector1, 1.25, .1, .1 MoveEntity connector1, -.25, 0, 0 sphere2 = CreateSphere() EntityType sphere2, 1 EntityRadius sphere2, 1 connector2 = CreateCube(sphere2) ScaleEntity connector2, 1.25, .1, .1 MoveEntity connector2, .25, 0, 0 cube1 = CreateCube() EntityType cube1, 3 EntityBox cube1, 0, 0, 0, 1, 1, 1 cube2 = CreateCube() EntityType cube2, 3 EntityBox cube2, 0, 0, 0, 1, 1, 1 MoveEntity sphere1, -1.5, 0, 0 MoveEntity sphere2, 1.5, 0, 0 MoveEntity cube1, -1.5, -2.5, 0 MoveEntity cube2, 1.5, -3.5, 0 Collisions 1, 3, 2, 2 ;loop Repeat ;gravity MoveEntity sphere1, 0, -.002, 0 MoveEntity sphere2, 0, -.002, 0 UpdateWorld() AlignToVector sphere1, (EntityX(sphere1)-EntityX(sphere2)), (EntityY(sphere1)-EntityY(sphere2)), (EntityZ(sphere1)-EntityZ(sphere2)), 1 AlignToVector sphere2, (EntityX(sphere1)-EntityX(sphere2)), (EntityY(sphere1)-EntityY(sphere2)), (EntityZ(sphere1)-EntityZ(sphere2)), 1 RenderWorld() Flip Until KeyHit(1) |
| ||
thanks mate think ive managed to make a mokup physic code from that hope to be posting soon |