Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

1

12.04.2014, 20:21

Problem mit Collider in Unity [ Gelöst]

Liebe Leser

Ich entwickle grade ein kleines Projekt und stoße schon auf das erste Problem.

Ich habe eine Art Spielbrett, wo eine Kugel (mit Rigidbody) hin und her rollen kann. Dieses Spielbrett kann man je nachdem, wie die Maus bewegt wird leicht kippen.
Das Resultat : Die Kugel rollt hin und her.
Ich weiß nicht ob ihr dieses Spiel kennt. (Labyrinth)

Wenn ich die Maus nun zu heftig bewege und das Spielbrett sich zu schnell in eine andere Richtung dreht, dann fällt die Kugel durch das Spielbrett.

Der Grund ist wahrscheinlich, das Die Kugel bei einer Heftigen Bewegung (während 2 Frames) ein Dreieck des Spielbrettes durchstößt, sodass keine Kollision erkannt wird.

Versteht ihr was ich mein.

Kann man das lösen? Bei der Tribase war es so, das man zwischen 2 Frames ein Linienkollisionserkennung durchführte (tbLineHitModel) um so etwas zu verhindern.

Danke im voraus.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Sebastian Müller« (20.04.2014, 17:11)


David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

13.04.2014, 00:54

Für solche Fälle gibt es "continuous collision detection". Schau mal hier:
https://docs.unity3d.com/Documentation/S…ectionMode.html

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

3

13.04.2014, 10:41

Danke. :D

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

4

14.04.2014, 11:02

Ich habe es eben ausprobiert.

Es klappt leider nicht. Der Ball fällt bei schnellen Bewegungen immer noch durch.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

5

14.04.2014, 16:47

Wo fliegt die Kugel durch? Durch den Boden?
Wenn ja: welchen Collider verwendest du dort? Ich tippe mal auf einen MeshCollider mit Plane/Quad als Modell bzw. einen dünnen BoxCollider.
Sollte das der Fall sein: probiere einfach mal, was passiert, wenn du einen stärkeren Box-Collider verwendest. (Als Stärke des Colliders könntest du bspw. den Durchmesser der Kugel verwenden.)

Sollte das nicht helfen, könntest du probieren, dem Feld einen Rigidbody zu geben, bei dem "Use Gravity" deaktiviert und "isKinematic" aktiviert ist.

Als Alternative könntest du noch gucken, ob wirklich das Feld gedreht werden muss oder ob eine Bewegung der Kamera (+ Lichtquelle, sofern vorhanden) und Anpassung der Gravity nicht ausreichend wäre.


Anbei noch: sehr wahrscheinlich handelt es sich bei diesem Effekt um Tunneling. Innerhalb eines Berechnungsschritts werden die Positionen so angepasst (bewegt), dass gar keine Kollision erkannt wird.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

6

16.04.2014, 12:28

Ich erkläre kurz wie Die Szene aufgebaut ist.

Das Spielbrett -> Rigidbody [Use Gravity = No / Is Kinematic = On / Collision Detection = Continuous / Der Rest = Standardwerte] + [Meshcolider für jedes Mesh]

Der Ball -> Rigidbody [ Use Gravits = On / Os Kinematic = Off / Collision Detection = Continuous / Der Rest = Standardwerte] + [Sphere Collider]

Was meinst du mit einem stärkeren Boxcollider? ich verwende Meshcolider, weil das Modell dafür zu Komplex ist.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

7

16.04.2014, 18:18

Dann wäre wichtig zu wissen, wo genau die Kugel durchfiel, obwohl sie es nicht sollte.
Sollte es immernoch der Boden sein, dann wird der Boden im MeshCollider zu dünn sein und du solltest lieber auf eine Kombination mehrerer Collider umsteigen, um diesen anzunähern. Der Collider für den Boden sollte dabei dann nicht so flach wie der tatsächliche Boden sondern wesentlich dicker sein.
Sollten es die Wände sein, musst du evtl. etwas dickere Wände verwenden.

Und mit Hilfe von Bildern (bspw. Screenshots) ließe sich die Problematik bestimmt einfacher erklären. ;)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

8

16.04.2014, 18:24

Der Ball -> Rigidbody [ Use Gravits = On / Os Kinematic = Off / Collision Detection = Continuous / Der Rest = Standardwerte] + [Sphere Collider]

Der Ball sollte auf Continous Dynamic stehen.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

  • »Sebastian Müller« ist der Autor dieses Themas

Beiträge: 369

Wohnort: Freilingen [Rheinland-Pfalz]

Beruf: Schüler

  • Private Nachricht senden

9

16.04.2014, 20:37

Ich habe den Ball auf "Continuous Dynamic" gestellt. Es hilft leider nicht.

Ich habe zusätzlich zum Meshcollider eine BoxCollider genommen, der auf der Höhe des Bodens liegt. Der Ball fällt durch beide Collider durch, wenn ich schnell bewege.
Zusätzlich habe ich sogar versucht, dem Ball 2 verschieden SphereColliders zu geben. Jeweils mit unterschiedlicher Scallierung. Es hat leider nichts gebracht.
Ich veröffentlichen das Projekt evt. bald hier. Dann könnt ihr ja mal sehen, woran es liegen könnte.

Im Anhang ist ein Bild, um das Spielprinzip zu verstehen.
»Sebastian Müller« hat folgendes Bild angehängt:
  • Bild.png

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

10

17.04.2014, 08:04

Du drehst das Spielfeld doch auf der x und z Achse oder?
Wenn das Ruckartig passiert kann ich mir vorstellen, dass der Ball deswegen durch den Boden fällt.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige