Allgemeine Physik-Objekte sind hier prop_physics, prop_physics_multiplayer oder func_physbox, etc. Eben alles, was sich so aufhängen lässt. Speziell auf Ragdolls wird im 2. Teil eingegangen.
Die Grundkonstruktion der Umgebung sollte soweit schon bestehen. Umgebung um Effekte herum zu bauen ist immer eher sinnfrei. Benötigte Entities sind folgende:
Der grundsätzliche Aufbau sieht wie folgt aus:
kommt dahin, wo das Seil befestigt sein soll, z.B. unter der Decke
Key | Value |
---|---|
Name | rope_a_start |
Next KeyFrame | rope_a_end |
Slack | 0 |
Width, Type, Subdivision, Material etc. nach Belieben
dort, wo das Seil endet und am Physikobjekt befestigt ist
Key | Value |
---|---|
Name | rope_a_end |
Parent | rope_a_dynamic |
genau auf dem keyframe_rope
Key | Value |
---|---|
Attached Object 2 Point | der Bezugspunkt (blaue Kugel) sollte auf dem move_rope liegen! |
Entity 1 | rope_a_dynamic |
so ausrichten, dass der Aufhängepunkt genau auf dem keyframe_rope liegt
Key | Value |
---|---|
Name | rope_a_dynamic |
World Model | models/props_junk/meathook001a.mdl (in meinem Fall…) |
Alles andere sollte bei den Standardeinstellungen belassen werden.
10 bis 16 units unterhalb des keyframe_rope (ausprobieren!)
Key | Value |
---|---|
Target object | rope_a_dynamic |
Da die Anordnung soweit steht (und jeder der nur schnell nachgucken wollte wie's noch gleich ging alles hat, was er will), erläutere ich hier für alle Interessenten etwas genauer was warum wie gesetzt wird:
Das move_rope bildet nicht den Aufhängepunkt der Konstruktion, auch wenn es hier mit diesem zusammenliegt. Es ist lediglich für den Anfangspunkt des Seils da.
Das keyframe_rope befindet sich am Seilende, bzw. bildet dieses, und das prop_physics ist sinnigerweise so ausgerichtet, dass es das keyframe_rope dort hat, wo es angebunden sein soll.
Viel mehr hat das phys_lengthconstraint mit dem Aufhängepunkt zu tun. Und zwar muss das phys_lengthconstraint als solches auf dem Punkt liegen, an dem das prop_physics seinen Angelpunkt hat, also quasi dort, wo das Physikobjekt am Seil festgebunden ist. Der Bezugspunkt (die blaue Kugel - attached object 2 point
) des phys_lengthconstraint bildet die Aufhängung der gesamten Konstruktion und sollte realistischerweise genau auf dem move_rope liegen.
Damit ist unsere Grundkonstruktion soweit beschrieben, da kommt aber noch das info_mass_center ins Spiel. Wenn kein info_mass_center vorhanden ist, liegt der Massenmittelpunkt des Objekts genau am gemessenen Mittelpunkt (der, der im Editor per x markiert ist, wenn man das Model ausgewählt hat).
Da allerdings die Massenverteilung meist anders ist, sollte man hier ein info_mass_center setzen - vor allem um die Schwingungen des Objekts etwas zu dämpfen. Bei der Positionierung kann man allerdings nicht vom allg. logischen Verständnis ausgehen. Wenn ich z.B. bei dem Meathook-Model (was ich in der Testmap verwendet habe), den Massenmittelpunkt weiter nach unten setze, so wie es logisch wäre, dann fängt das Model ingame viel mehr an herumzueiern, als vorher. Nach ein paar anderen Versuchen hat sich dann ergeben, dass es sinnvoller ist, die Distanz von phys_lengthconstraint zu info_mass_center relativ gering zu halten, auch wenn das Model länger ist. Das sorgt dafür, dass das Physikobjekt nicht so viel Beschleunigung durch Rotation erfährt und demnach etwas ruhiger auspendelt. Wie genau man das Massezentrum jetzt setzt, muss man wohl trotzdem noch probieren.
Hier ist meine Testmap:
objekt_an_seil.zip
Zu Deutsch: Stoffpuppen. Ragdolls sind tote Menschen oder Aliens, die an etwas befestigt werden. Hier wollen wir ein Zombie an einem Baum aufhängen.
props_foliage
Ordner.rope1
und bei Next Keyframe rope2
an.models/Zombie/Classic_legs.mdl
oder ein anderes Model je nachdem, was du dort hängen haben willst. Gib bei Name ragdoll
ein.ragdoll
an (Entity 2 bleibt leer!).