[B3D] Bewegungsvektoren anhand der Meshoberfläche bestimmen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Raoudi

Betreff: [B3D] Bewegungsvektoren anhand der Meshoberfläche bestimmen

BeitragMi, März 12, 2008 18:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Seid gegrüßt,

ich möchte Objekte (Trümmer) im 90° Winkel von der Oberfläche eines bestimmten Objekts (Boden) starten lassen. Um es zu veranschaulichen, habe ich euch ein Bild gemalt:

user posted image

Die zu startenden Objekte sollen die Bewegungsvektoren X, Y und Z haben (wobei man Z hier vernachlässigen kann, da ich es nicht benötige).
Auslöser sollen hierfür "Geschosse" sein, die zuvor mit dem Boden kollidiert und dadurch verschwunden sind.

Leider fällt mir hierzu überhaupt nichts ein. Wie könnte der Code aussehen, der die X- und Y-Geschwindigkeit der Trümmerobjekte, bei der Kollision des Geschosses mit dem Boden, bestimmt?
 

Dreamora

BeitragMi, März 12, 2008 18:12
Antworten mit Zitat
Benutzer-Profile anzeigen
die richtung am boden erhälst du durch ein linepick. jeweils alte geschossposition -> neugeschossposition linepicken. wenn du etwas gefunden hast mit dem pick -> pickednx ny nz, das ist die normale an der oberfläche

das woran sie explodieren können sollen muss einfach pickbar sein.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

Raoudi

BeitragMi, März 12, 2008 20:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit so gut, solange das Geschoss nach unten fliegt (also die Y-Geschwindigkeit negativ ist) klappt alles wunderbar.

Jedoch weigert es sich bei positiver Y-Geschwindigkeit den Boden ordentlich zu picken und gibt bei PickedY() und PickedNY() null wieder. PickedX() hingegen stimmt komischerweise.

Code: [AUSKLAPPEN]
;bul\mesh ist das Geschoss, der Rest sollte klar sein
If EntityCollided(bul\mesh,floor_col)
 LinePick(EntityX(bul\mesh),EntityY(bul\mesh),0,bul\xspeed,bul\yspeed,0)
 ;Trümmerteile erstellen usw
EndIf


Woran kann das liegen?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, März 12, 2008 23:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Kollisionen gehen immer nur von einer Seite auf einem Dreieck aus. Wenn nun ein Geschoss aus dem ''Boden'' kommt, wird also logischer Weise keine Kollision stattfinden.

- Ausserdem hast du dein Code nicht ganz so umgesetzt, wie Dreamora es dir vorgeschlagen hat. Sollte aber egal sein, denn...

- In der Form - wie du kein Code bereits programmiert hast (vorhandenes EntityCollided) - kannst du es auch gleich mit ql:CollisionNX machen. Das Ergebnis ist ein bereits normalisierter Vector, der in deinem Fall nur noch negiert werden muss.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Raoudi

BeitragMi, März 12, 2008 23:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun ist's perfekt, habt Dank.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group