Saltar al contenido principal

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.GetPositionZ y Transform.SetPosition;
  • Transform.GetRotation, Transform.GetRotationX, Transform.GetRotationY, Transform.GetRotationZ y Transform.SetRotation;
  • Transform.GetScale, Transform.GetScaleX, Transform.GetScaleY, Transform.GetScaleZ y Transform.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.