2017-04-07 1 views
-1

내가 가진 문제는 적을 사격 할 범위에 들어서서 멈추고 선수가 사격장을 벗어나더라도 선수를 다시 따라 오지 않는다는 것입니다 . 플레이어가 사격장에 진입했는지 탐지하기 위해 나는 적을 위해 구형 충돌 장치를 만들었습니다.그가 적정 거리를 입력 할 때 적을 멈추게 만드는 방법

using UnityEngine; 
using System.Collections; 

public class EnemyWithRifleMovement : MonoBehaviour { 

    private GameObject player; 
    private NavMeshAgent nav; 
    private bool playerInRange = false; 
    private Rigidbody rb; 

    void Awake() 
    { 
     rb = GetComponent<Rigidbody>(); 
     player = GameObject.FindGameObjectWithTag("Player").gameObject; 
     nav = GetComponent<NavMeshAgent>(); 
    } 

    void Update() 
    { 
     if(playerInRange) 
     { 
      nav.SetDestination(transform.position); 
     } 
     else if(playerInRange == false) 
      nav.SetDestination(player.transform.position); 
    } 

    void OnTriggerEnter(Collider other) 
    { 
     if(other.gameObject.CompareTag("Player")) 
     { 
      playerInRange = true; 
     } 
    } 

    void OnTriggetExit(Collider other) 
    { 
     if(other.gameObject.CompareTag("Player")) 
     { 
      playerInRange = false; 
     } 
    } 
} 
+0

'OnTriggetExit'의 철자가 잘못되었습니다. 그것은'OnTriggerExit'이어야합니다. – Keiwan

+0

글쎄, 나는 그것이 새로운 것을 쉽게 알 수 있습니다. 감사 –

답변

0

오타가 하나만있는 것을 제외하면 코드는 모두 괜찮아 보입니다. OnTriggetExitOnTriggerExit으로 바꾸면 제대로 작동합니다.

또한 내 의견으로는 playerInRange = (Vector3.Distance(transform.position, player) <= range을 수행하여 적과 플레이어 간의 거리를 쉽게 구할 수 있습니다.

관련 문제