I’m trying to make a moving platform that uses rigid body physics, because I want the linear velocity to effect the player.
Here’s the simple code to set its worldPosition
from bge import logic
def moving(cont):
own = cont.owner
if not "init" in own:
own["fixedZ"] = own.worldPosition.z
own["init"] = True
own.worldPosition.z = own["fixedZ"]
print(own.worldPosition.z)
print(own["fixedZ"])
own.worldPosition.z remains 0, as does own[“fixedZ”], yet it still moves a bit…?
I can just use lock Translation, however I would like to know why this doesn’t work.
Thanks
This is because physics and physics reaction will be calculated and applied after logic.
I can’t give you a good advice as I never had this situation. (I could solve similar situations, by having one visible and one physics object. This way the delay was not visible).
Hint: you do not need “init”. You can check “fixedZ” directly. If it is not there just set it with an default value.
You can even do this.