我在 Unity3d 中制作了一辆前面有一个脚轮的两轮汽车。在为某些任务移动汽车后,我想在通过 Unity3d 按下“停止”按钮后将其带回初始位置。为此,我做了以下事情。
createdRobot.rigidbody.angularVelocity = Vector3.zero;
createdRobot.rigidbody.velocity = Vector3.zero;
createdRobotL.rigidbody.angularVelocity = Vector3.zero;
createdRobotL.rigidbody.velocity = Vector3.zero;
createdRobotR.rigidbody.angularVelocity = Vector3.zero;
createdRobotR.rigidbody.velocity = Vector3.zero;
createdRobot.transform.rotation = Task1ResetPosition.rotation;
createdRobot.transform.position = Task1ResetPosition.position;
createdRobotL.transform.rotation = Task1ResetPosition.rotation;
createdRobotL.transform.position = Task1ResetPosition.position;
createdRobotR.transform.rotation = Task1ResetPosition.rotation;
createdRobotR.transform.position = Task1ResetPosition.position;
其中 createdRobot 是汽车基础游戏对象, createdRobotL 和 createdRobotR 分别是我的左右轮游戏对象。两个轮子通过可配置接头与底座连接。
现在,每当我在 FixedUpdate 中执行上述操作时,我的汽车都会回到初始位置,但它是以正面朝上的形式翻转的。我google了很多,但没有找到合适的解决方案。
我的 createdRobot、createdRobotL、createdRobotR 是另一个名为 Robot 的游戏对象的子对象,它不是刚体。
现在,如果我销毁机器人并使用预制件中的实例再次创建,而不是执行上述重置方法,我的汽车正在按预期正确重置,但是这种方法会重置机器人中我不想要的所有内容。
GameObject.Destroy(GameObject.FindGameObjectWithTag("Robot_Tag"));
Instantiate(Robot,Task1ResetPosition.position,Task1ResetPosition.rotation);
做上面的事情,就是让我的车正确地回到初始位置。但是,如果有人告诉我如何在不再次实例化的情况下将汽车带回初始位置,那将是可观的。
谢谢。