版本: Unity 6 (6000.0)
语言English
  • C#

ArticulationBody.PublishTransform

建议修改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每一项更改建议,并在适用的情况下进行更新。

关闭

提交失败

由于某些原因,您的更改建议无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public void PublishTransform();

描述

从物理系统读取关节体的坐标和旋转,并将其应用于相应的Transform组件。

注意:此方法不会更新子 Transform。它应该从最顶层的 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(); } }

使用包含ArticulationBodyPhysicsScene进行模拟,并使用PublishTransform将物理系统中的信息读取到Transform组件中。