Kollisions Problem

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Kai-li

Betreff: Kollisions Problem

BeitragMi, Nov 07, 2007 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, ich habe da ein Problem mit einer Kollision, es funktioniert alles so wie es sein sollte, bis auf diese Kollision, dabei geht es nicht um einen Fehler sondern eher, weiß ich nicht was ich tun könnte um das Problem zu lösen:
Ich habe zwei Schwerter mit Blender modelliert, ide habe ich dann mit "LoadMesh" geladen, SchwertA und SchwertB. Eins der Schwerter steuert der Spieler und das andere wird, sobald dann endlich mal die Kollision klappen sollte vom Computer gesteuert. Aufjedenfall sollen die Schwerter einfach mit einander kollidieren, sodass sie nicht immer durch sich durch gehen das wäre ja sonst blöd, irgendwie. Mit "Entityradius" sieht das ganze dann eklig aus, das Schwert hält entweder viel zu früh an oder flutscht einfach trotzdem durch das andere durch.

Was kann man den tun, um diese beiden Polygone kollidieren zu lassen.
Vielen Dank für Antworten.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Nov 07, 2007 11:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich fürchte dass du speziell in deinem Fall nicht um eigene Berechnung umrum kommst, denn selbst ql:MeshesIntersect kannst du da nicht nutzen, da Scwerter nun mal sehr dünn sind aber schnell seitlich bewegt werden. Eine Überschneidung ist daher nicht immer garantiert.

Hier ein Beispiel:

Code: [AUSKLAPPEN]
Graphics3D 800,600,0,2
SetBuffer BackBuffer()

PositionEntity CreateCamera(),0,0,-20
RotateEntity CreateLight(),40,-20,0

c1=CreateCube()
c2=CreateCube()

PositionEntity c1,-12,1,0
PositionEntity c2,+12,0,0

While Not KeyHit(1)
   TranslateEntity c1,6,0,0
   
  RenderWorld
   If MeshesIntersect(c1,c2)=1 Then Text 400,200,"Kollision",1
   
   Flip
   Delay 1000
Wend
End


Wenn du nun auf TranslateEntity c1,7,0,0 umstellst, weißt du was ich meine. Man könnte aber die Schwerter mit MeshesIntersect aber mit selbstgebastellten und transparenten Quads auf Kollision prüfen. Ist eine Kollision erfolgt, so muss der letzte Bewegungsablauf in feineren Schriten nochmal durchgeführt werden. Ob das dann noch alles ohne ruckeln und hacken funktioniert, weiß ich nicht. Oder man berechnet gleich die Schnittpunkte im 3D-Raum.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Dreamora

BeitragMi, Nov 07, 2007 11:42
Antworten mit Zitat
Benutzer-Profile anzeigen
für schwerter gibt es 2 mögliche lösungen:

1. Kugel - Kugel kollision und die ellipse so legen dass sie +- das schwert ausfüllt
2. Linepick auf der Länge des Schwertes mit dem Radius der Klingenbreite und die schwerter und figuren pickbar machen
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMi, Nov 07, 2007 11:47
Antworten mit Zitat
Benutzer-Profile anzeigen
@Dreamora,

Zu 1: Kann man Kollisionskugelradien auch drehen? Wenn ja, dann gehts natürlich. Ich errinere mich gelesen zu haben, dass es nicht ginge. Hmmm, bin mal kurz ausprobieren...

Zu 2: Geht wohl nicht, wenn die Bewegungen zu schnell ausgeführt werden, da die Schwerter zu dünn sind und eine 'Überlappung' in einem Frame übersprungen werden kann.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Kai-li

BeitragMi, Nov 07, 2007 15:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal Danke für die raschen Antworten.

@hectic
Von dem Befehl hatte ich bisher gar nichts gehört: "Meshesintersect". Ich werds mal mit dem ausprobieren, zumal meine Schwerter sich nicht so schnell bewegen.

@dreamora
Das mit den Elipsen wäre gar keine so dumme Idee. Wenn man keine Slidekollision macht und die Kollisionskugel genau auf die Klinge setzt.
Aber wie mache ich sie eliptisch?

Das mit dem Linepick ließe sich auchmal versuchen...

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group