Seite 2 von 2

Re: MoveEntity(#PB_Relative) funzt mit Physik nicht mehr ?!

Verfasst: 21.10.2013 15:28
von Chimorin
Das funktioniert nicht, weil du den Physikalischen Körper ABSOLUT setzt.
Da gibt es irgendwie einen Unterschied zwischen relativ und absolut; Wie es auch ist, absolut setzt das Entity an diese Position, egal welche.
Bei relativ fährt das Entity den Weg ab oder die Physikengine kann damit arbeiten, was auch immer, nur bei relativen Bewegungen funktionieren die Physikkörper.

Komme ich zu meinem voreiligen Statement:
Hier handelt es sich um einen neuen Bug. Ich bin mir nicht sicher, weil ja das Beispiel FPSFirstPerson.pb komischerweise funktioniert, aber sonst funktioniert kein Beispiel.
Die Bugbeschreibung lautet: MoveEntity(#PB_Relative) funzt mit Physik nicht mehr ?!.
Kann jemand das Gegenteil beweisen? :D

Re: MoveEntity(#PB_Relative) funzt mit Physik nicht mehr ?!

Verfasst: 22.10.2013 15:08
von Chimorin
So, ich habe mal einen entsprechenden Thread im englischen Forum erstellt. Comtois hat wenig später geantwortet und hier kommt die Lösung:
1. Entferne #PB_Relative bei MoveEntity().

Das war es schon. Nun funktioniert es einwandfrei. Meiner Meinung nach liegt da wohl ein Fehler bei MoveEntity().

Re: MoveEntity(#PB_Relative) funzt mit Physik nicht mehr ?!

Verfasst: 25.10.2013 10:22
von Makke
Aha, vielen Dank. Ich war schon echt am verzweifeln. Aber der physische Körper ist immer noch "verschoben". Da kann man nur mit dem Workaround eines zweiten unsichtbaren Entities arbeiten oder gibt es noch eine andere Lösung ?

Re: MoveEntity(#PB_Relative) funzt mit Physik nicht mehr ?!

Verfasst: 25.10.2013 17:11
von Chimorin
Da habe ich leider auch keine Ahnung.
Was mich auch stört ist, dass mein Physikbody immer inaktiv ist oder dem Entity eine Rotation verpasst.

Re: MoveEntity(#PB_Relative) funzt mit Physik nicht mehr ?!

Verfasst: 28.10.2013 08:43
von Makke
Wenn Du das Mesh an den Koordinaten 0, 0, 0 zentrierst, dann ist der physische Körper korrekt über das Entity gelegt. Ich hatte bisher immer den Körper mit den Füßen auf der Y-Achse auf den Null-Punkt gelegt, dann war der physische Körper verschoben.

Re: MoveEntity(#PB_Relative) funzt mit Physik nicht mehr ?!

Verfasst: 28.10.2013 15:16
von bobobo
Ein Verschieben von Physikbodies habe ich nicht gesehen ..
Egal wo ich es definiere (sphere,box .. ) der PhysikKörper passt
(warum muss ich jetzt an HaarsprayWerbung denken ??)
Bei externen Meshes wie dem Ninja könnte das anders sein. Sollte
doch aber wohl eigentlich nicht.

Benutz mal statt

Code: Alles auswählen

EntityPhysicBody(\entity, #PB_Entity_CapsuleBody, 0.8, 0, 0)
lieber

Code: Alles auswählen

EntityPhysicBody(\entity, #PB_Entity_ConvexHullBody, 0.8, 0, 0)

irgendwo bei Zeile 206

diese Kapsel ist eine Kapsel und sicher nicht identisch mit der Form des Ninja
dann klappt es auch besser mit der Kollisionserkennung

Re: MoveEntity(#PB_Relative) funzt mit Physik nicht mehr ?!

Verfasst: 28.10.2013 22:55
von Makke
Ja. Es ist nur bei externen Modellen so (siehe Robot und Ninja). Die Purebasic Meshes (Sphere, Cube usw.) sind an den Koordinaten 0,0,0 (mit deren Mittelpunkt) automatisch ausgerichtet.

Re: MoveEntity(#PB_Relative) funzt mit Physik nicht mehr ?!

Verfasst: 25.11.2015 06:00
von Power P
Ich hätte hierzu auch nochhmal eine Frage.

Wenn ich bei MoveEntity() "#PB_Relative" weglasse fuktioniert zwar die Physik wieder, aber mit der Gravitation stimmt irgendwas nicht. Die Objekte fallen viel zu langsam nach unten. Hat da jemand vielleicht eine Lösung für das Problem?
Wenn ich ApplyEntityForce() und ApplyEntityImpulse() verwende ist die Fallgeschwindigkeit zwar in Ordnung, aber hier kann ich nicht den Modus "#PB_Local" verwenden um den Player in Blickrichtung laufen zu lassen.

Re: MoveEntity(#PB_Relative) funzt mit Physik nicht mehr ?!

Verfasst: 25.11.2015 09:58
von STARGÅTE
MoveEntity im zusammenhang mit einem physikalischen Objekt zu verwenden ist keine gute Idee, da bei einer Bewegung keinerleit Informationen über die Geschwindigkeit/Impuls/Kraft zur Verfügung stehen.
Um eine Art local Bewegung zu erzeugen, kannst du dir die Blickrichtung deines Körpers zurückgeben lassen.
Hier reicht vermutlich: EntityYaw()
Damit bekommst du deine Blickrichtung in der X-Z-Ebene.
Die Verwendest du dann mit Cos() und Sin() für deinen Bewegungsimpuls:
ApplyEntityImpulse(#Entity, Cos(EntityYaw(#Entity))*Scale, 0, Sin(EntityYaw(#Entity))*Scale)
Scale ist dann eine Art Bescheunigungswert

Re: MoveEntity(#PB_Relative) funzt mit Physik nicht mehr ?!

Verfasst: 26.11.2015 05:47
von Power P
Vielen Dank, werde das gleich mal ausprobieren...