Ich möchte ein Seil erstellen, das mit Objekten wie im folgenden YouTube-Video kollidieren kann:
Ich denke, dass Sie die verlet-Integration implementieren, die Punkte verwendet und diese Punkte mit Linien verbindet. Ich versuche herauszufinden, welche Art von Kollisionserkennung Sie auf das Seil anwenden würden, um den Effekt im Video zu erzielen.
Ich denke, Sie müssten für jeden Punkt eine CD machen. Ich würde gerne box2D verwenden, also frage ich mich, ob ich aus jedem Punkt einen starren Körper machen könnte. Jeder Rat wäre dankbar.
collision-detection
box2d
rope-physics
Joey Green
quelle
quelle
Antworten:
Da Sie Box2D verwenden, können Sie eine Reihe von Rechtecken erstellen und die Verbindungen von Box2D verwenden , um diese zu verbinden. Da hast du dein Seil.
Um zu vermeiden, dass Ecken aus einem gebogenen Seil herausragen, kann ich mir zwei Möglichkeiten vorstellen:
Warnung: Ich habe es noch nie selbst versucht, aber ich kann nicht erkennen, wie eine Reihe verbundener Rechtecke fehlschlagen kann, wenn das von Ihnen gepostete Video praktisch dieselbe Verkleidung aufweist.
Edit: Ich habe gerade PaulZ gesehen und mir ist dasselbe klar geworden. Lesen Sie auch seinen Kommentar zur Frage.
quelle
Ein schnelles Google warf dies hier auf . Eine Demo, eine Beschreibung und ein Code (in Flash) mit Box2D zur Implementierung eines einfachen Seils. Das Seil kollidiert mit sich selbst und dem Block oben in der Szene.
quelle
Hier ist, was ich tun würde, machen Sie jeden Punkt auf der Linie zu einem Kreis, machen Sie genug Punkte, dass sich die Kreise überlappen. Binden Sie jeden Punkt an den Nachbarn und nicht an die Standardkollision. Durch dieses Binden sollten die Punkte einen festen Abstand voneinander haben.
Ich kenne Box2D nicht, aber ich vermute, dass die erforderliche Funktionalität vorhanden ist.
quelle
Ursprünglich hatte Box2D eine Seilbrückendemo aus dünnen Boxen, die mit Punkt-zu-Punkt-Bedingungen verbunden waren. Das wäre ein guter Anfang (ich weiß nicht, ob es noch mit dieser Demo geliefert wird, aber es wäre einfach nachzubauen).
Es ist einfach genug, ein Seil als Partikel mit Abstandsbeschränkungen unabhängig von einem Starrkörpersimulator zu implementieren (wie Sie bereits erwähnt haben, unter Verwendung eines Verlet-Integrations- und Beschränkungslösungsschemas wie dem in diesem Artikel beschriebenen: http://www.gamasutra.com/resource_guide/ 20030121 / jacobson_pfv.htm ), aber wenn Sie wollen, dass starre Körper auf Ihr Seil reagieren (wie im Video mit der Dangling Box), wird es viel komplizierter. Ich würde mit einer umfassenden Suite von Tools wie Box2D beginnen und rückwärts arbeiten, anstatt zu versuchen, aus Partikeln aufzubauen.
quelle
Ich erinnere mich an dieses Allegro-Spiel: Cupid von SpeedHack 2002. Es enthält eine Implementierung für Seile, die mit der Szenerie kollidieren. Siehe PhysParticles- und HeartTrails-Klassen in der Datei heart_tails.cpp im Quellcode .
quelle