Ship going through dock
Blitz3D Forums/Blitz3D Programming/Ship going through dock
| ||
The ship goes throught the dock. What is wrong?AppTitle "Great Lakes Shipping" SetBuffer BackBuffer() Graphics3D 1280,1024,32,0 light = CreateLight() Dim Cam(5) Cam(0) = 0.0 Cam(1) = 30.0 Cam(2) = -50.0 Cam(3) = 1 Cam(5) = CreatePivot() PositionEntity Cam(5),Cam(0),Cam(1),Cam(2) Global BoatX = 0 Global BoatY = 10 Global BoatZ = 0 Global BoatYaw = 180 Global Water = CreatePlane() EntityType Water,1 EntityColor Water,0,0,255 Global Oreboat = LoadMesh("Data\Boats\Ore Carrier\Oreboat.3ds") ;Collisions ;1 = Water ;2 = Oreboat ;3 = Oredock Collisions 2,1,3,3 EntityType Oreboat,2 Global camera = CreateCamera(Cam(5)) PositionEntity Camera,Cam(0),Cam(1),Cam(2) RotateEntity Oreboat,270,180,90 Oredock = LoadMesh("Data\Graphics\Oredock.3ds") EntityType Oredock,3 RotateEntity Oredock,270,90,0 PositionEntity Oredock,0,40,100 Collisions 2,3,1,1 While Not KeyHit(1) TestKeys() RenderWorld UpdateWorld Flip Wend FreeEntity Oredock ClearMem() Function ClearMem() FreeEntity Oreboat FreeEntity Water FreeEntity Camera FreeEntity Light End End Function Function TestKeys() If KeyHit(2) Then Cam(3) = 1 ElseIf KeyHit(3) Then Cam(3) = 2 EndIf If KeyDown( 203 ) And Cam(4) = 2 Then RotateEntity Cam(5),0,0.1,0 EndIf If KeyDown( 203 ) And Cam(3) = 1 BoatX = BoatX + -1.0 Cam(0) = Cam(0) + -1.0 Update = True EndIf If KeyDown( 205 ) And Cam(3) = 1 BoatX = BoatX + 1.0 Cam(0) = Cam(0) + 1.0 Update = True EndIf If KeyDown( 208 ) And Cam(3) = 1 BoatZ = BoatZ + -1.0 Cam(2) = Cam(2) + -1.0 Update = True EndIf If KeyDown( 200 ) And Cam(3) = 1 BoatZ = BoatZ + 1.0 Cam(2) = Cam(2) + 1.0 Update = True EndIf If KeyDown( 75 ) BoatYaw = BoatYaw + 1.0 Update = True EndIf If KeyDown( 77 ) BoatYaw = BoatYaw + -1.0 Update = True EndIf If Update = True Then PositionEntity Oreboat,BoatX,BoatY,BoatZ RotateEntity Oreboat,270,BoatYaw,90 Update = False PositionEntity Cam(5),Cam(0),Cam(1),Cam(2) EndIf End Function |
| ||
Um, is this a trick question? You tell us what's wrong. |
| ||
Do not utilize PositionEntity, RotateEntity. Use Moveentity, and TurnEntity. Positioning makes the collisions not work at all, check the b3d docs on Moveentity and TurnEntity. Also, what the hell are you trying to accomplish? we can't see what you see because we don't have your 3d models. |
| ||
Do not utilize PositionEntity, RotateEntity. Use Moveentity, and TurnEntity. Positioning makes the collisions not work at all, check the b3d docs on Moveentity and TurnEntity. I'm pretty sure that's not true. I've never used MoveEntity or TurnEntity and I've never had any Blitz collision problems. Granted, Blitz collisions are a wee bit crap, and I tend to use alternatives in anything serious, but I'm still pretty sure that's not the case. From a quick glance, I can't see any reference to EntityBox or EntityRadius, and that could be the problem. Blitz can't guess how large the collision sphere and box should be, you'll have to tell it. |
| ||
I have used PositionEntity and the meshes go straight through other models. I might have not set up the radius correctly. I enjoy utilizing move and turn entity more than positioning and rotate, so that’s what came to mind. Sorry, :) |
| ||
trust me, PositionEntity works JUST fine with collisions.. to the extend that positioning an entity in a level with collisions makes it COLLIDE on the way! (yeah, PositionEntity actually MOVES the entity, it doesn't POSITION it..) Tracer |
| ||
Um, is there any difference between move/turn & position/rotate except that move/turn applies a relative transform to the entity while position/rotate applies a fixed transform? |
| ||
The "oreboat.3ds" is a ship. The water collision works fine. |
| ||
Try UpdateWorld before Renderworld. (Dunno just personal preference) AFAIK PoitionEntity will still allow collisions. I would guess it's the collision radii - especially if your meshes are large-ish. |
| ||
Why call it Cam(0), Cam(1), etc. How confusing. It's just as easy to call it CamX, CamY, etc. Now you don't even have to remember which is which. This has got to be one of the strangest ways I have ever seen on ending a program: FreeEntity Oredock ClearMem() Function ClearMem() FreeEntity Oreboat FreeEntity Water FreeEntity Camera FreeEntity Light End End Function Also, How do you know that your water collision works? You never send the boat downward (Y movement). |
| ||
maybe use cube placeholders so we can actually test it? |
| ||
You can click here to get the file. The main file is called Great Lakes Shipping. Does anybody know how to get the physics working. Like the ship slowly decrease it's speed when you stop. I'm trying to make it like Train Simulator if anybody has it. Edit: Go here and then click Dowload GLS |