Unity3d에서 전방에 하나의 캐스터 휠이있는 2 개의 바퀴 달린 자동차를 만들었습니다. 어떤 작업을 위해 차를 움직 인 후에, Unity3d를 통해 "STOP"버튼을 누른 후 초기 위치로 되돌리고 싶습니다. 나는 그렇게하기 위해 다음을했다. createdRobot 자동차 기반 게임 오브젝트입니다Unity3d 자동차 game 객체를 파괴하고 다시 인스턴스화하지 않고 초기 위치로 가져 오는 방법은 무엇입니까?
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;
는 createdRobotL 및 createdRobotR은 각각 내 왼쪽과 오른쪽 바퀴 게임 오브젝트입니다. 두 바퀴는 구성 가능한 조인트를 통해 받침대와 연결됩니다.
이제 FixedUpdate에서 위의 작업을 수행 할 때마다 자동차가 초기 위치로 이동하지만 앞면이 위로 뒤집 힙니다. 나는 많이 봤지만 적절한 해결책을 찾지 못했습니다.
내 createdRobot, createdRobotL, createdRobotR은 강체가 아닌 Robot이라는 다른 게임 개체의 하위 항목입니다.
이제 로봇을 파괴하고 조립식에서 인스턴스를 사용하여 다시 만들면 위에서 설명한 방법을 수행하는 대신 내 차가 예상대로 올바르게 재설정되지만이 방법으로는 로봇에서 원하지 않는 모든 것을 재설정합니다.
GameObject.Destroy(GameObject.FindGameObjectWithTag("Robot_Tag"));
Instantiate(Robot,Task1ResetPosition.position,Task1ResetPosition.rotation);
위의 것을 수행하면 내 차가 초기 위치로 올바르게 오게됩니다. 하지만 누군가가 나에게 자동차를 초기 위치로 되돌려 놓는 방법을 알려주지 않으면 다시 시작해야합니다.
감사합니다.
나는 텔레포트하기 전에 이미 기본 리그를 기구학으로 설정하고 있습니다. 순간 이동하면기구 학적으로 설정하지 않고 몸 전체가 움직이지 않고 현재 위치에서 멈췄습니다. 내가 더 많은 것을 탐구하면서, 내가 발견 한 것은 내 기본 부품 디자인 오리엔테이션이 "UPSIDE DOWN"에 영향을 미칠 수 있다는 것입니다. 장비를 특정 위치에 고정시킨 후 회전 장치를 사용하는 방법을 알고 계십니까? – Niks
Instantiate가 내부적으로 어떻게 작동하는지 알 수있는 방법이 있습니까? – Niks
Well Instantiate는 원래의 프리 팹의 구성 요소와 속성으로 새로운 GameObject를 생성하기 때문에 파괴 된 객체의 이전 상태에 대해 전혀 알지 못하므로 새로 만들어집니다. destroy + instantiate를 사용하는 것은 분명히 해킹이며 적절한 해결책은 아닙니다. – benblo