Отключить скрипт, как только будет достигнуто целевое местоположение?

Как я могу заставить моего врага отключить скрипт, как только он достигнет целевого игрока? Я хочу сослаться на этот скрипт с именем Casting под моим GameManager в моем коде и отключить его, но я не уверен, как написать функцию для достижения целевого местоположения.

public float lookRadius = 40f;



Transform target;
UnityEngine.AI.NavMeshAgent agent;

Rigidbody theRigidBody;

void Start(){
    target = PlayerManager.instance.player.transform;
    agent = GetComponent<UnityEngine.AI.NavMeshAgent>();
}


void Update(){
    float distance = Vector3.Distance (target.position, transform.position);
    if (distance <= lookRadius)
    {
        agent.SetDestination (target.position);

        if (distance <= agent.stoppingDistance)
        {
            FaceTarget ();
        }
    }

}

void FaceTarget()
{
    Vector3 direction = (target.position - transform.position).normalized;
    Quaternion lookRotation = Quaternion.LookRotation (new Vector3 (direction.x, 0, direction.z));
    transform.rotation = Quaternion.Slerp (transform.rotation, lookRotation, Time.deltaTime * 5f);
}


// Use this for initialization
public void OnObjectSpawn () {


    //myRender = GetComponent<Renderer> ();
    theRigidBody = GetComponent<Rigidbody>();



}

void OnDrawGizmosSelected()
{
    Gizmos.color = Color.red;
    Gizmos.DrawWireSphere (transform.position, lookRadius);
}

}

1 ответ

Вам необходимо получить игровой объект со сценарием, получить сценарий для этого игрового объекта и отключить его.

if (distance < 1f) // or some distance
{
    Gameobject mygo = GameObject.Find("GameManager"); // or some other method to get gameobject.
    mygo.GetComponent<casting>().enabled = false;
}
Другие вопросы по тегам