ArticulationBody.PublishTransform
Declaration
public void PublishTransform();Описание
Читает позицию и вращение Артикулятора из физической системы и применяет их к соответствующему Transform компоненту.
Обратите внимание: Этот метод не обновляет дочерние Transforms. Его следует вызывать с самого верхнего Transform, вниз по иерархии.
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(); } }
Имитировать PhysicsScene с ArticulationBody и использовать PublishTransform для чтения информации из физической системы в компонент Transform.