Scriptname AATestTranslateTo extends ObjectReference;I found this in TranslateTo talk on the Creation Kit wiki:;To get Static object collisions to work with TranslateTo (to avoid leaving them behind as you describe), you must edit the bhkRigidBody settings in NifSkope to change:;Layer: Change OL_STATIC to OL_ANIM_STATIC.;Layer Copy: Change OL_STATIC to OL_ANIM_STATIC.;Motion System: Change MO_SYS_BOX_STABILIZED to MO_SYS_BOX.;Also, the static itself must be re-created under MovableStatic in the CK, not the regular Static section. --Phinix 05:01, 16 June 2012 (EDT);However, TranslateTo has issues with collision if you're riding the object, so I don't think just that will work.import Math;--------------------------------; Define vars;The ref(s) to move toObjectReference property TargetRef auto;The rideractor rider;Angle from current position to the targetfloat angle;Distance to target in game unitsfloat distance;How long the translation should take, in seconds?;This should probably be changed to a property.float translationtime = 60.0;How often to update position, in seconds?;Might have to make this a global variable and allow players to configure it themselves...;1.0 = 1 fps;0.04 = 25 fps;0.02 = 50 fps;0.01 = 100 fpsfloat interval = 1.0;Distance per step in game unitsfloat stepdist;How many iterationsint steps;--------------------------------; EventsEvent OnActivate(ObjectReference akActionRef) ;Make the rider the player for now. rider = Game.GetPlayer() ;Absolute distance ;This is the hypotenuse of the triangle made by the x and y distance to the target float xdist = Abs( Abs(GetPositionX()) - Abs(TargetRef.GetPositionX()) ) float ydist = Abs( Abs(GetPositionY()) - Abs(TargetRef.GetPositionY()) ) distance = Sqrt(Pow(xdist, 2)+Pow(ydist, 2)) Debug.Notification("xdist: "+xdist+" ydist: "+ydist+" straight distance: "+distance) ;Number of steps and step distance steps = (translationtime * ( 1 / interval )) as int stepdist = distance / steps ;Calculate angle to move angle = GetHeadingAngle(TargetRef) + GetAngleZ() Debug.Notification("Angle: "+angle+" Steps: "+steps+" stepdist: "+stepdist) ;Should probably replace this with a recursive function later and pass in the translationtime. int i = 0 while ( i &--#60; steps ) i+=1 MoveShip(stepdist, angle) Utility.Wait(interval) endwhileEndevent;--------------------------------; FunctionsFunction MoveShip(float d, float a) ;Set its z angle to the calculated "forward" angle. ;Might have to offset by 90 or something if the model is locally rotated. ;But this may make it easier to move in a bezier curve later on, because we will always just be moving forward in small approximations. SetAngle(GetAngleX(), GetAngleY(), a) ;Possibly add some simulated "rocking" from waves here, but that is low-priority. ;Move it forward by one step SetPosition( GetPositionX() + d * Sin(GetAngleZ()), GetPositionY() + d * Cos(GetAngleZ()), GetPositionZ() ) ;TranslateTo( GetPositionX() + d * Sin(GetAngleZ()), GetPositionY() + d * Cos(GetAngleZ()), GetPositionZ(), GetAngleX(), GetangleY(), a, 1000, 0 ) ;Now the tricky part: move all of the riders ;For now just test it on one rider - the player. ;The following does NOT work at all, the screen goes black every second and the player cant move: ;rider.MoveTo( rider, distance*Math.Sin(a), distance*Math.Cos(a), 0 ) Endfunction;P.S. Bethesda: add correct comment highlighting to your code tag please...