Задать вопрос
@1bd_1l_Bari

Что происходит в коде?

Есть следующий код, обратите внимание на метод SetAlive в конце который:
public class WanderingAI : MonoBehaviour {
    public float speed = 3.0f;
    public float obstacleRange = 5.0f;
    private bool _alive;
	// Use this for initialization
	void Start () {
        _alive = true;
	}
	
	// Update is called once per frame
	void Update () {
        if (_alive)
        {
            transform.Translate(0, 0, speed * Time.deltaTime);
            Ray ray = new Ray(transform.position, transform.forward);
            RaycastHit hit;
            if (Physics.SphereCast(ray, 0.75f, out hit))
            {
                if (hit.distance < obstacleRange)
                {
                    float angle = Random.Range(-110, 110);
                    transform.Rotate(0, angle, 0);
                }
            }
        }
	}
    public void SetAlive(bool alive)
    {
        _alive = alive;
    }
}


И есть скрипт
public class ReactiveTarget : MonoBehaviour {
    public void ReactToHit()
    {
        WanderingAI behavior = GetComponent<WanderingAI>();
        if(behavior != null)
        {
            behavior.SetAlive(false);
        }
        StartCoroutine(Die());
        
    }


Я правильно понимаю, что во втором скрипте мы создаем объект класса из первого скрипта, и затем в этой строке behavior.SetAlive(false) мы изменяем значение переменной _alive из первого скрипта?
  • Вопрос задан
  • 476 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Ну да. Присваивается false и AI ни чего не делает
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы