2017-12-22 8 views
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 구성 요소를 제거하는 방법 ???

+0

대신에 이동 방법 호출을 중지 할 수 있습니다. - 그 물건을 한 번만 움직이고 싶니? 그것이 정말로 당신이하고 싶은 것이면 - Destroy (this)를 사용하십시오; –

+0

@TobiasTheel ..... 안녕 내 친애하는 친구 .... 아니요 런타임에 알 수없는 번호로 navmeshAgent 매개 변수를 다른 객체에 추가하고 이동 후 해당 구성 요소를 제거해야합니다 ......... 그렇지 않습니다. 이 속성들이이 객체들에 얼마나 많은 시간 동안 기여했는지 확인하십시오 ........ 이것은 매우 동적입니다. –

+0

이것이 최선의 접근 방법이 아닐 것입니다. 지속적으로 할당 (추가) 및 삭제 (제거)가 실적에 영향을 미칠 것입니다. 컴포넌트를 나중에 제거하고 추가하는 대신 재사용하는 솔루션을 생각해야합니다. –

답변

0

나는 내 문제에 대한 해결책을 찾았습니다. 모양 :

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); 
    Invoke ("disablenavmeshagent", 2);  
} 

//------------------------------------- 
void disablenavmeshagent() 
{ 
    NavMeshAgent tempnavmesh = new NavMeshAgent(); 
    tempnavmesh =this.gameObject.GetComponent<NavMeshAgent>(); 
    tempnavmesh.enabled = false; 
}