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

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

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

Beitrag 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
Bild

- formerly known as Bananenfreak -
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

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

Beitrag 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().
Bild

- formerly known as Bananenfreak -
Benutzeravatar
Makke
Beiträge: 156
Registriert: 24.08.2011 18:00
Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
Wohnort: Ruhrpott
Kontaktdaten:

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

Beitrag 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 ?
---
Windows 11 (64 bit)
Benutzeravatar
Chimorin
Beiträge: 451
Registriert: 30.01.2013 16:11
Computerausstattung: MSI GTX 660 OC mit TwinFrozr III
6Gb DDR 3 RAM
AMD Phenom II X4 B55 @ 3,6GHz
Windows 7 Home Premium 64-bit

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

Beitrag 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.
Bild

- formerly known as Bananenfreak -
Benutzeravatar
Makke
Beiträge: 156
Registriert: 24.08.2011 18:00
Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
Wohnort: Ruhrpott
Kontaktdaten:

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

Beitrag 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.
---
Windows 11 (64 bit)
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3857
Registriert: 13.09.2004 17:48
Kontaktdaten:

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

Beitrag 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
‮pb aktuell5.7 - windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Makke
Beiträge: 156
Registriert: 24.08.2011 18:00
Computerausstattung: AMD Ryzen 7 5700X - AMD Radeon RX 6800 XT - 32 GB DDR4 SDRAM
Wohnort: Ruhrpott
Kontaktdaten:

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

Beitrag 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.
---
Windows 11 (64 bit)
Power P
Beiträge: 36
Registriert: 05.08.2014 04:02

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

Beitrag 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.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

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

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Power P
Beiträge: 36
Registriert: 05.08.2014 04:02

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

Beitrag von Power P »

Vielen Dank, werde das gleich mal ausprobieren...
Antworten