Collision geht nicht bitte helft!!!!!
Übersicht

Mr.XBetreff: Collision geht nicht bitte helft!!!!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo weis jemand wiso ich keine collision bekomme.
Code: [AUSKLAPPEN] Graphics3D 1024,768 SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,1,-5 boden=CreatePlane() EntityType boden,1 plane=LoadMesh("E:\Modelle\cssna140.3ds") EntityType Plane,2 EntityRadius plane,1 Collisions 1,2,2,2 While Not KeyHit (1) If KeyDown(30) TurnEntity plane,-2,0,0 If KeyDown(44) TurnEntity plane,+2,0,0 If KeyDown(203) TurnEntity plane,0,2,0 If KeyDown(205) TurnEntity plane,0,-2,0 col=CountCollisions(plane) FOR i=1 TO col Text 000,i*20,"Entity="+CollisionEntity(plane,i) Next UpdateWorld RenderWorld Flip Wend End Wäre echt dankbar. |
||
- Zuletzt bearbeitet von Mr.X am Sa, Feb 24, 2007 23:09, insgesamt einmal bearbeitet
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
TypeQ ist das was sich auf TypeZ bewegt, um eine Kollision hervor zu rufen. Bei dir ist es anders rum. Tausche mal die EntityType -Werte. | ||
Mr.X |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Meitest du EntityType boden,1 werte tauschen geht aber auch nicht.
Hat keiner mehr ideen. (Schuldigung meintest "Collisions" geht aber auch nicht) oder kann mir jemand sagen wie ich leicht eine collision zwischen zwei Entity`s prüfen kann Ein Plane Entity Und ein Mesh Danke schonmal. |
||
- Zuletzt bearbeitet von Mr.X am Sa, Feb 24, 2007 23:27, insgesamt einmal bearbeitet
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei dir hat 'plane' - also das geladene Mesh - nur ein EntityRadius, dadurch bewegt sich nichts bei TurnEntity, womit eine Kollision hervor gerufen werden kann. Dringende Bitten werden sicherlich nicht eher beantowortet. Nur mal so nebenbei... | ||
Mr.X |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Und was muss ich machen damit es functioniert? | ||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Schau mal, du hast eine Kugel (EntityRadius) definiert:
Code: [AUSKLAPPEN] plane=LoadMesh("E:\Modelle\cssna140.3ds")
EntityType Plane,2 EntityRadius plane,1 Wenn du nun die Kugel drehst (TurnEntity): Code: [AUSKLAPPEN] If KeyDown(30) TurnEntity plane,-2,0,0
If KeyDown(44) TurnEntity plane,+2,0,0 If KeyDown(203) TurnEntity plane,0,2,0 If KeyDown(205) TurnEntity plane,0,-2,0 Dann passiert nichts, da sich nichts zubewegend bewegt. Kollisionen gehen immer nur aus der Bewegung aus. Das bedeutet - anders als in 2D - das nach einer Kollision diese im nächstem Schleifendurchlauf nicht mehr kollidiert, ausser man bewegt selber wieder in Richtung des zu kollidierenden. Was du nun machen musst, weiß ich nicht, da ich nicht weiß, was du genau erreichen willst. Aus deinem Code ist es mir noch nicht ersichtlich. Nenne mir was du willst, und vielleicht kann ich dir dann helfen. ![]() |
||
Mr.X |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke schonmal wollte ein flugzeug das mit der oberfläche collidiert
Bin auch schon weiter aber das flugzeug versinkt noch im boden aber nicht mehr ganz. versinkt nur noch bis zur mitte. MeshWidth(Entity) <- keine richtigen angaben?? |
||
- Zuletzt bearbeitet von Mr.X am So, Feb 25, 2007 0:33, insgesamt einmal bearbeitet
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, es sollte wohl auch Cessna heissen und Plane=Flugzeug nicht Plane=Fläche ala CreatePlane (hat mich verwirrt). Du kannst in Blitz3D nur leider sehr schlecht Polygon zu Polygon Kollisions machen. Wenn überhaupt dann mit ql:MeshesIntersect was sehr langsam sein soll. Hab ich auch noch nie ausprobiert. Üblicher weise wird es so gemacht, dass man mit mehreren EntityRadien versucht im groben die Form eines Objekte nachzubilden und es so kollidieren zu lassen. Dazu ist das Parent/Child -Verhalten ganz Sinnvoll. Willst aber nur, das dein Flugzeug zerschellen kann ohne Landeanflug und realistischem Verhalten bei Bodenkontakt, so reicht auch nur ein EntityRadius.^^ | ||
Mr.X |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab es schon mit entityRadius versucht geht aber ergentwie nicht
egal wie groß ich den umpfang mache ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Vielleicht hilft dir dein etwas modifizierter Code: [AUSKLAPPEN] Graphics3D 1024,768,0,2
SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,1,-5 light=CreateLight() RotateEntity light,20,-20,0 boden=CreatePlane() EntityType boden,2 plane=CreateSphere(8);Mesh("E:\Modelle\cssna140.3ds") EntityType Plane,1 EntityRadius plane,1 Collisions 1,2,2,2 While Not KeyHit (1) If KeyDown(30) TurnEntity plane,-2,0,0 If KeyDown(44) TurnEntity plane,+2,0,0 If KeyDown(200) MoveEntity plane,0,.01,0 If KeyDown(208) MoveEntity plane,0,-.01,0 If KeyDown(203) TurnEntity plane,0,2,0 If KeyDown(205) TurnEntity plane,0,-2,0 col=CountCollisions(plane) UpdateWorld RenderWorld For i=1 To col Text 0,i*20,"Kollision";"Entity="+CollisionEntity(plane,i) Next Flip Wend End Bewege mal erst mit Cursor hoch dann, wenn die Sphere komplett aus dem Boden raus ist, wieder zurück in den Boden mit Cursor runter... |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
MeshWidth gibt die absolute Breite eines Entitys an.
Das bedeutet: MeshWidth=[Vertex mit maximalem X Wert]-[Vertex mit minimalem X Wert] |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Mr.X |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Danke erstmal für den code hat mir schon sehr geholfen.
dan hab ich aber nochmal ne frage wo für ist die angabe der X,Y,Z Koordinate bei EntityBox man gibt doch entity an??? und die breite, höhe, tiefe??? Hab es so gemacht: EntityBox plane, 0, 0, 0, MeshWidht(plane),meshheight(plane),Meshdepth(plane) Collision erfolgt aber immer nen ganzes stück übern boden???? Was mache ich falsch EntityBox plane, 0, 0, 0, 0, 0, 0 Und so bleibt es auch immer nen stück übern boden???????? Was soll das denn????? |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
OK, das ist witzig ^^
Du musst für ein Objekt, was als Collision_Source dient, immer eine Sphere angeben. Es gibt nur Sphere-to-box, Sphere-to-Sphere und Sphere-to-Polygon Kollision. Die Sphere hat also immer noch den Radius 1. |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Mr.X |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also kann ich EntityBox nicht nehmen???
Bin jetzt endlich bis auf 0.02 am boden Juhu ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group