Transform
Cada GameObject tiene un Transform. Lua lee la posición mundial y la rotación de Euler, y la escala local. Las rotaciones usan grados. Los Setters devuelven false por un GameObject faltante, un número no finito o un valor fuera del rango seguro de PS1.
Posición, rotación y escala
Cada propiedad vectorial tiene un getter de tabla, un getter de eje escalar y un setter que acepta un Vec3 o tres números:
local position = Transform.GetPosition(gameObjectId)
local x = Transform.GetPositionX(gameObjectId)
Transform.SetPosition(gameObjectId, x + 1.0, position.y, position.z)
Transform.SetPosition(gameObjectId, { x = 0.0, y = 1.0, z = -2.0 })
local rotation = Transform.GetRotation(gameObjectId)
Transform.SetRotation(gameObjectId, rotation.x, 90.0, rotation.z)
local scale = Transform.GetScale(gameObjectId)
Transform.SetScale(gameObjectId, scale)
Métodos:
Transform.GetPosition,Transform.GetPositionX,Transform.GetPositionY,Transform.GetPositionZyTransform.SetPosition;Transform.GetRotation,Transform.GetRotationX,Transform.GetRotationY,Transform.GetRotationZyTransform.SetRotation;Transform.GetScale,Transform.GetScaleX,Transform.GetScaleY,Transform.GetScaleZyTransform.SetScale.
Movimiento incremental
Transform.RotateX, Transform.RotateY y Transform.RotateZ añaden grados a la rotación de Euler actual. Transform.Translate añade un desplazamiento de espacio-mundo.
rotationSpeed = 45.0
function Update(gameObjectId, deltaTime)
Transform.RotateY(gameObjectId, rotationSpeed * deltaTime)
Transform.Translate(gameObjectId, 0.0, 0.0, 0.25 * deltaTime)
end
La traslación directa no resuelve las colisiones de movimiento. Utiliza CharacterController.Move para un jugador cinemático o NPC, y NavMeshAgent para moverte a lo largo de una ruta preprocesada.