Collisions bei animiertem Mesh
Übersicht

![]() |
joshmamiBetreff: Collisions bei animiertem Mesh |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Community,
Ich möchte gerne ein animiertes Mesh auf Kollision mit einem anderen abfragen.Nur funktioniert der Befehl Kollisions nicht.Ich habe schon alle drei Abfrage-Möglichkeiten (Kugel-Kugel;Kugel-Polygon;Kugel-Würfel) ausprobiert, aber bei jeden Versuch gingen die Entities "durcheinander hindurch". Der Code von dem Versuch mit Kugel-Kugel: BlitzBasic: [AUSKLAPPEN] EntityType Gegner,1,1 Der Code von dem Versuch mit Kugel-Polygon: BlitzBasic: [AUSKLAPPEN]
Der Code von dem Versuch mit Kugel-Würfel: BlitzBasic: [AUSKLAPPEN]
Jetzt hoffe ich, ihr könnt mir helfen |
||
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich tippe mal darauf das du beide Entity bewegst. Die Kollision von Blitz3D geht aber nur, wenn das Entity B statisch ist (sich also nicht bewegt). Wenn du allerdings eine Spieler-Spieler Kollision brauchst, musst du entweder auf eine externe Physik-Simulation zurückgreifen, oder dir einfach die Radius-Abfragen selber schreibst (Abstand berechen und winkel beider Spieler berechnen, prüfen ob der Wert kleiner ist als die Radien der Kollisions-Kugeln und dann zurücksetzten) ![]() mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
joshmami |
![]() Antworten mit Zitat ![]() |
---|---|---|
Erstmal Danke für die schnelle Antwort, ToeB ![]() Bei meinen Versuchen habe ich zwar nur einen der Spieler bewegt, aber beide wurden gerade animiert, also waren sie wahrscheinlich beide nicht statisch.Offenbar muss ich mir also selbst eine Abfrage schreiben ![]() Oder kennst du eine gute externe Physik-Simulation, die ich verwenden könnte? |
||
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
hast du denn wirklich ein UpdateWorld in der Hauptschleife?
@ToeB das hör ich zum ersten Mal, dass nur eines der beiden Objekte bewegt werden darf. Stimmt das wirklich? |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
joshmami |
![]() Antworten mit Zitat ![]() |
---|---|---|
Natürlich, die Animationen funktionieren ja auch fehlerfrei | ||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jupp, wenn sich beide Objekte bewegen gibt es Probleme:
BlitzBasic: [AUSKLAPPEN] Graphics3D 640, 480, 0, 2 |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
wow! Danke Xeres!
ist das ein Bug, oder gibt es hierfür eine Erklärung? |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
joshmami |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was ist denn eigentlich so eine Physik-Simulation, die die Lösung sein könnte?
Ist NooNooPhysiks so etwas? Und müsste ich dafür alles umschreiben? |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich glaube, es liegt an der Reihenfolge der Aktionen: Erst wird bewegt und dann bei UpdateWorld Kollisionen verarbeitet. Dann lässt sich nicht entscheiden, welcher Mesh in welchen eingedrungen ist und entsprechend gestoppt werden muss.
@joshmami: Physik-Simulation ist ein bisschen mit Kanonen auf Spatzen schießen. Da musst du dich einarbeiten und ja, ggf. andere Mechanismen in den Code bauen. Könntest du dann aber natürlich auch gleich für andere Sachen benutzen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Midimaster: Nein, das ist in dem Sinne kein Bug, sondern einfach ein fehlendes Feature. Kollisionen von mehreren sich bewegenden Meshes zu berechnen ist irre kompliziert ![]() @joshmami: Oft wird in solchen Fällen auf eine Physikengine zurückgegriffen, um das Problem zu lösen. Es gibt zwar einige wenige Libraries, die sich nur auf Kollisionen spezialisieren, aber ich glaube nicht, dass Wrapper für B3D existieren. NooNooPhysics würde ich nicht empfehlen, da sie nur für 2D gedacht ist und schon lange keinen Support mehr erhält. Allerdings muss man sehen, dass eine vereinfachte Kollision eigentlich der bessere Weg ist, als auf Polygon-Polygon Kollision zu beharren. Eine Kugel-Kugel Kollision für bewegte Objekte ist ja schnell geschrieben und sollte für die meisten Fälle eigentlich reichen. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
Midimaster |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Xeres
auf die Idee bin ich auch gleich gekommen und habe mal 2 UpdateWorld() reingepackt. Aber leider kein Unterschied BlitzBasic: [AUSKLAPPEN] While Not KeyDown(1) Es ist sogar so, dass man die Bewegung von Sphere1 abschalten kann und dann gibt es immer noch keine Kollision! BlitzBasic: [AUSKLAPPEN] While Not KeyDown(1) seltsam!!! |
||
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eigentlich nicht seltsam, da bei Collisions ein bewegtes und ein unbewegtes Objekt angegeben wird.
BlitzBasic: [AUSKLAPPEN] Collisions 1, 2, 2, 2 ...und schon klappt dein Code. Edit: Stoppt aber auch ohne zusätzliches UpdateWorld, da beide Objekte angehalten werden. Oder so. @joshmami: Collisions schon mal in beide Richtungen angeschaltet? |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
joshmamiBetreff: Gelöst!!! |
![]() Antworten mit Zitat ![]() |
---|---|---|
Juhuuu ![]() ![]() Das ist die Lösung! Vielen Dank an Xeres, und alle anderen die versucht haben, mir zu helfen ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group