Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


PublishTransform()

Reads the position and rotation of the Articulation Body from the physics system and applies it to the corresponding Transform component.
Read time 1 minuteLast updated 4 days ago

Definition

  • Type: Method
  • Namespace: UnityEngine
  • Assembly: UnityEngine.PhysicsModule
public void PublishTransform()

Remarks

Note: This method doesn't update the child Transforms. It should be called from the topmost Transform, down the hierarchy.
Simulate a PhysicsScene with an ArticulationBody and use ArticulationBody.PublishTransform to read the information from the physics system to the Transform component.

Examples

using System.Linq;using UnityEngine;public class ExampleScript : MonoBehaviour{ private PhysicsScene m_SomeScene; private ArticulationBody m_RootArticulation; public void SimulateTrajectory(float totalTime) { m_SomeScene.RunSimulationStages(0f, SimulationStage.PrepareSimulation); for (int i = 0; i < totalTime / Time.fixedDeltaTime; i++) m_SomeScene.RunSimulationStages(Time.fixedDeltaTime, SimulationStage.RunSimulation); // Transforms of the ArticulationBody tree are still like they were at the start of the method var links = m_RootArticulation.gameObject.GetComponentsInChildren<ArticulationBody>().ToList(); links.Sort((a0, a1) => a0.index.CompareTo(a1.index)); foreach (var ab in links) ab.PublishTransform(); // Transforms of the ArticulationBody tree are now up to date and can be accessed to see where the bodies ended up after simulating for "totalTime" seconds } // Teleports the root body of the Articulation and applies the resulting position and rotation to the Transform component public void TeleportAndUpdate(Vector3 position, Quaternion rotation) { m_RootArticulation.TeleportRoot(position, rotation); m_RootArticulation.PublishTransform(); }}