Unity3dで前輪キャスター付きの二輪車を一台作りました。あるタスクのために車を動かした後、Unity3d を介して「STOP」ボタンを押した後、最初の位置に戻したいと考えています。そのために次のことを行いました。
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 で上記の操作を行っているときはいつでも、私の車は最初の位置に来ていますが、前面が上になっています。私はたくさんグーグルで検索しましたが、適切な解決策が見つかりませんでした。
私のcreatedRobot、createdRobotL、createdRobotRは、剛体ではないRobotという別のゲームオブジェクトの子です。
さて、ロボットを破棄してプレハブからのインスタンス化を使用して再度作成した場合にリセットする上記の方法を実行する代わりに、私の車は期待どおりに適切にリセットされますが、この方法ではロボットの不要なものがすべてリセットされます。
GameObject.Destroy(GameObject.FindGameObjectWithTag("Robot_Tag"));
Instantiate(Robot,Task1ResetPosition.position,Task1ResetPosition.rotation);
上記のことを行うことで、私の車が適切に初期位置に来るようになっています。しかし、もう一度インスタンス化せずに車を初期位置に戻す方法を誰かが教えてくれたら、それはかなりの価値があります。
ありがとう。