@nikitasalnikov
Новичок

Выскакивает ошибка, как решить?

делаю по книге. при запуске игры выскакивает ошибка
Assets/ReactiveTarget.cs(11,32): error CS0411: The type arguments for method 'Component.GetComponent()' cannot be inferred from the usage. Try specifying the type arguments explicitly. как решить ее?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ReactiveTarget : MonoBehaviour
{
   

    public void ReactToHit()//метод вызванный сценарием
	{
        WanderingAI behavior = GetComponent();
        if (behavior != null) //проверяем присоеденен ли к персонажу сценарий WanderingAI; он может и отсутствовать
        {
            behavior.SetAlive(false);
        }
        StartCoroutine(Die());
	}

    private IEnumerator Die()//опрокидываем врага, ждем 1,5 секунды и уничтожаем его
	{
        this.transform.Rotate(-75, 0, 0);

        yield return new WaitForSeconds(1.5f);

        Destroy(this.gameObject); //объект может уничтожить сам себя точно так же, как любой другой объект
	}
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        
    }
}


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WanderingAI : MonoBehaviour
{
    public float speed = 3.0f;//значение для скорости движения и расстояния, с которого начинается реакция на препятствие
    public float obstacleRange = 2.0f;
    private bool _alive;
    
    // Start is called before the first frame update
    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;
    }
}
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
@Sumor
Попробуйте
WanderingAI behavior = GetComponent<WanderingAI>();
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
GD Company Санкт-Петербург
от 120 000 до 150 000 ₽
Mystery Tag Новосибирск
от 80 000 до 110 000 ₽
от 130 000 до 200 000 ₽