MoveObject
From Multi Theft Auto: Wiki
This function will smoothly move an object from its current position to a specified rotation and position.
Syntax
Required Arguments
- theObject: The object that will be moved.
- time: The time in milliseconds the object will arrive at the destination.
- targetx: The X value of the target position
- targety: The Y value of the target position
- targetz: The Z value of the target position
Optional Arguments
- moverx: The rotation along the X axis relative to its current rotation, which is its starting angle.
- movery: The rotation along the Y axis relative to its current rotation, which is its starting angle.
- moverz: The rotation along the Z axis relative to its current rotation, which is its starting angle.
- strEasingType: the easing function to use for the interpolation (default is "Linear")
- fEasingPeriod: the period of the easing function (only some easing functions use this parameter)
- fEasingAmplitude: the amplitude of the easing function (only some easing functions use this parameter)
- fEasingOvershoot: the overshoot of the easing function (only some easing functions use this parameter)
Returns
Returns true if the function moved the object succesfully, and returns false otherwise.
Examples
Click to collapse [-]
ServerExample 1: This example moves every object in the game up 100 units in ten seconds.
allObjects = getElementsByType ( "object" ) for key, theObject in ipairs ( allObjects ) do local origX, origY, origZ = getElementPosition ( theObject ) --get the origanal position local newZ = origZ + 100 -- make a new z position moveObject ( theObject, 10000, origX, origY, newZ ) --move the object to this position in 10 seconds. end
Click to collapse [-]
ServerExample 2: This example created a model (of a bed) near a player called someguy, if they exist in the game. It will then move the model towards the player over 3 seconds.
-- Find a player called 'someguy' someGuy = getPlayerFromName ( "someguy" ) -- If a player called someguy was found then if ( someGuy ) then -- Get the player's position x, y, z = getElementPosition ( someGuy ) -- Create a bed (1700) object near to the player bed = createObject ( 1700, x + 5, y, z ) -- Move the bed towards the player over 3 seconds (3000 milliseconds) moveObject ( bed, 3000, x, y, z ) -- Tell the player in the chat box outputChatBox ( "Moving a bed towards you!", someGuy ) else -- Tell everyone that a player called 'someguy' could not be found outputChatBox ( "Player someguy doesn't exist" ) end
Click to collapse [-]
ServerExample 3: This example creates a ball moving (in front of CJ's house in Grove Street) using easing functions. Test command is "/smove" for instance "/smove OutBounce". This example is a serverside code but the same could be done clientside (adapting the command handler)
local START_POS = {2497.203125, -1672.4864501953, 12.640947341919} local STOP_POS = {2480.2595214844, -1666.521484375, 12.640114784241} local MOTION_DURATION = 5000 local WAIT_DURATION = 1000 addCommandHandler("smove", function (player, cmd, strEasingType, period, amplitude, overshoot) local x, y, z = unpack(START_POS) local object = createObject(1598, x, y, z) x, y, z = unpack(STOP_POS) period = period or 0.3 amplitude = amplitude or 1.0 overshoot = overshoot or 1.70158 outputChatBox(string.format("Server Easing %s %s %s %s", strEasingType, tostring(period), tostring(amplitude), tostring(overshoot))) moveObject(object, MOTION_DURATION, x, y, z, 0, 0, 360, strEasingType, period, amplitude, overshoot) setTimer(destroyElement, MOTION_DURATION+WAIT_DURATION, 1, object) end)
See Also
- createObject
- moveObject
- stopObject