0
후 navmesh 구성 요소 제거 :나는 이동에 대한 클래스 게임 객체가이처럼 보이게 이동
public class Navmesh_move : MonoBehaviour {
private NavMeshAgent _thismove;
Transform test;
//Vector3 destenation_Pos;
Vector3 destenation_Position,vector3test;
// Use this for initialization
public void move(float x,float y,float z)
{
//this.transform.Rotate (0, 0, 180);
_thismove =this.gameObject.GetComponent<NavMeshAgent>();
destenation_Position = new Vector3(x,y,z);
_thismove.SetDestination(destenation_Position);
NavMeshAgent tempnavmesh = new NavMeshAgent();
tempnavmesh =this.gameObject.GetComponent<NavMeshAgent>();
tempnavmesh.enabled = false;
//this.transform.position=destenation_Position;
}
을}
그때 나는 개체 게임이 때문이라고.하지만 전에 내 게임 개체를 수정 tempnavmesh.enabled = false;
을 추가합니다.하지만 그 라인을 추가 한 후에는 "SetDestination" can only be called on an active agent that has been placed on a NavMesh.
오류가 발생하고 제 게임 개체가 움직이지 않습니다.
게임 개체를 이동 한 후 navmeshAgent
구성 요소를 제거하는 방법 ???
대신에 이동 방법 호출을 중지 할 수 있습니다. - 그 물건을 한 번만 움직이고 싶니? 그것이 정말로 당신이하고 싶은 것이면 - Destroy (this)를 사용하십시오; –
@TobiasTheel ..... 안녕 내 친애하는 친구 .... 아니요 런타임에 알 수없는 번호로 navmeshAgent 매개 변수를 다른 객체에 추가하고 이동 후 해당 구성 요소를 제거해야합니다 ......... 그렇지 않습니다. 이 속성들이이 객체들에 얼마나 많은 시간 동안 기여했는지 확인하십시오 ........ 이것은 매우 동적입니다. –
이것이 최선의 접근 방법이 아닐 것입니다. 지속적으로 할당 (추가) 및 삭제 (제거)가 실적에 영향을 미칠 것입니다. 컴포넌트를 나중에 제거하고 추가하는 대신 재사용하는 솔루션을 생각해야합니다. –