Hallo,
ich möchte ein Objekt (D_X_Harbour_FootBridge03) laaangsaam drehen (nicht mit einem mal).
Ich habe mit KuschelUschi schon festgestellt, dass sich Objekte(also alles was nicht settler, oder sonstwie beweglich ist)weder mit
Logic.SetOrientation(entity, orientation) noch mit Logic.RotateEntity(entity, orientation) drehen kann.
Also: entity destroyen, und mit gewünster orientation neu setzen.
Ich habe eine funktion geschrieben, die ein Objekt langsam drehen soll, nur leider bewegt sie das Objekt mit einem mal........ Sie basiert auf SimpleJobEx, der ja eigentlich nur jede sekunde ausgeführt wird. Also, warum dreht sich das ding dann so schnell?:
Wie könnte es klappen, dass sich das objekt langsam drehtCode:function DrehMich(_entity, _AufWievielGrad, _Richtung)-- _Richtung: 1 im Uhrzeigersinn 2 gegen Uhrzeigersinn local entity = GetEntityId(_entity); local _orientation = Logic.GetEntityOrientation(entity); local _entityType = Logic.GetEntityType(entity) local _newOri = _orientation if _orientation < _AufWievielGrad and _Richtung == 1 then StartSimpleJobEx(function() print (_newOri) _newOri = _newOri -0.5 ReplaceEntity( _entity, _entityType, _newOri) if _newOri <= 2 then _newOri = 359 elseif _newOri <= _AufWievielGrad then ReplaceEntity( _entity, _entityType, _AufWievielGrad) return true end end) elseif _orientation < _AufWievielGrad and _Richtung == 2 then StartSimpleJobEx(function() print (_newOri) _newOri = _newOri +0.5 ReplaceEntity( _entity, _entityType, _newOri) if _newOri >= _AufWievielGrad then ReplaceEntity( _entity, _entityType, _AufWievielGrad) return true end end) elseif _orientation > _AufWievielGrad and _Richtung == 1 then StartSimpleJobEx(function() _newOri = _newOri -0.5 ReplaceEntity( _entity, _entityType, _newOri) if _newOri <= _AufWievielGrad then ReplaceEntity( _entity, _entityType, _AufWievielGrad) return true end end) elseif _orientation > _AufWievielGrad and _Richtung == 2 then StartSimpleJobEx(function() _newOri = _newOri +0.5 ReplaceEntity( _entity, _entityType, _newOri) if _newOri >= 359 then _newOri = 1 elseif _newOri >= _AufWievielGrad then ReplaceEntity( _entity, _entityType, _AufWievielGrad) return true end end) end end function ReplaceEntity( _entityScriptName, _type, _ori, _player, _name) local _entity = GetEntityId(_entityScriptName); local pos = GetPosition(_entity); local player = _player or Logic.EntityGetPlayer(_entity); local orientation = _ori or Logic.GetEntityOrientation(_entity); local _namei = _name or Logic.GetEntityName(_entity); Logic.DestroyEntity(_entity); return CreateEntity(player, _type, pos, _namei, orientation); end
Marius





LinkBack URL
Über LinkBacks

Zitieren



Lesezeichen