Kollision - Seil (Poly) mit Box(en)
Übersicht

onkelz89Betreff: Kollision - Seil (Poly) mit Box(en) |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
ich wollte ein Seil erstellen... Aufbau sollte wie folgt sein: - Taste zur Erstellung drücken - 4 Vertexe werden erstellt - Alle 4 auf Camera Position (2 Davon um 1 höher Y-Wert) - diese 4 zusammenfügen... - die 2 letzte mit der Camera bewegen... # geht! Wenn nun das Seil, welches aus 4 Triangles besteht mit einem Würfel kollidiert, soll einfach nur eine Meldung kommen. Daten bisher: Code: [AUSKLAPPEN] collisions 1,2,2,3 block=CreateCylinder(16) PositionEntity block,220,200,280 ScaleEntity block,10,10,10 EntityColor block,55,55,55 EntityRadius block,10 EntityType block,1 seil=CreateMesh() surfs=CreateSurface(seil) seilstart=0 EntityType seil,2 ;## Mainloop timer=CreateTimer(60) While Not KeyDown(1) If KeyHit(9) Then seilstart=1 AddVertex surfs,EntityX(cam)-1,EntityY(cam),EntityZ(cam) AddVertex surfs,EntityX(cam)-1,EntityY(cam)+.5,EntityZ(cam) AddVertex surfs,EntityX(cam)-1,EntityY(cam),EntityZ(cam) AddVertex surfs,EntityX(cam)-1,EntityY(cam)+.5,EntityZ(cam) AddTriangle surfs,0,1,2 AddTriangle surfs,3,2,1 AddTriangle surfs,2,1,0 AddTriangle surfs,1,2,3 EndIf If seilstart=1 Then VertexCoords surfs,2,EntityX(cam)-1,EntityY(cam),EntityZ(cam) VertexCoords surfs,3,EntityX(cam)-1,EntityY(cam)+.5,EntityZ(cam) If CountCollisions(block)>0 Or CountCollisions(seil)>0 Then runtimeerror("Test") EndIf EndIf Eine Kollision wird nicht erkannt, die Box bewegt sich nicht. Mit Meshesintersect geht es zwar, jedoch brauche ich später noch die genauen Kollisionskoordinaten.... weiß einer wie ich die möglichst Performacesparend errechnen kann? |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuche mal anstelle MeshesIntersect zwischen den Verbindungspunkten des Seiles mit LinePick![]() ![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Vielen Dank!!! Geht!
...allerdings ... nicht 100% genau.... Habe bei dem letzten Wert (Radius) von LinePick eine 1 eingetragen, das ist nicht das Problem, sondern das ich einen Cylinder "umschlingen" will. INFO: Immer wenn eine Kollision zustande kommt, erstelle ich 2 neue Vertexpunkte und füge per Addtriangle zusammen - geht Aber das passiert an Stellen wo der Cylinder gar nicht ist und auch sonst nichts... Habe den alten Punkt in OldX/Y/Z gespeichert und mache das hier: If Linepick(Oldx,oldy,oldz,entityx(cam)-oldx,entityy(cam)-oldy,entityz(cam)-oldz,1) then ... Was mache ich falsch? |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also: Erstmal sollte geklärt werden, ob sich der Zylinder bewegt oder dreht. Wenn ja, dann geht das ganze schonmal nicht so einfach mit Blitz3D-Bordmitteln. Dazu wäre eine gescheite Physikengine vorzuziehen.
Soll das ''Umschlagen'' nur rein grafisch geschehen, dann kann es u.U. sein, dass auch bei einer LinePick-Kollision keine erkannt wird, wenn der Startpunkt schon in einer Kollision statt findet. Und genau das passiert ja, wenn du nach einer Kollision um ein Zylinder neue Kollisionslinien erstellst. Wie genau LinePick arbeitet, habe ich diesbezüglich noch nicht ausprobiert. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
onkelz89 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bin auf der Arbeit, kann es momentan nicht testen... Aber das kann schon das Problem sein ... hm werde es heute Abend testen. Danke schonmal!
Der Cylinder bewegt sich nicht, rein statisch |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group