Unity переменная .. не была назначена - PullRequest
0 голосов
/ 07 декабря 2018

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

public GameObject AntagonisticElement;
public GameObject Target;
public float bulletSpeed;
public float enemySpeed;
public float bulletDestroyTime;
public GameObject explsn;
public GameObject bulletPrefab;
public Transform bulletSpawn;

Vector3 pos;

public float min = 20;
public float max = 10;

// Use this for initialization
void Start () {
    Target = GameObject.FindGameObjectWithTag("Tank");
}    
// Update is called once per frame
void Update () {

    transform.LookAt(Target.transform.position);

    if (Vector3.Distance(AntagonisticElement.transform.position, Target.transform.position) >= min)
    {
        AntagonisticElement.transform.position += AntagonisticElement.transform.forward * 4 * Time.deltaTime;

    }
    if (Vector3.Distance(AntagonisticElement.transform.position, Target.transform.position) <= max)
    {
        shootAt();
    }

}

void shootAt()
{

    Instantiate(explsn, bulletSpawn.position, bulletSpawn.transform.rotation);
    var bullet = Instantiate(bulletPrefab, bulletSpawn.position, bulletSpawn.rotation);
    bullet.GetComponent<Rigidbody>().velocity = bullet.transform.forward * bulletSpeed;

}

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Эта ошибка возникает из-за того, что поле Target не назначено объекту GameObject.

Чтобы назначить ссылку на сценарий MonoBehaviour, выполните следующие действия:

  • ВыберитеGameObject со сценарием, прикрепленным к нему из вашей иерархии.
  • В окне инспектора найдите слот Target.
  • Перетащите сборный блок в слот или нажмите на кружок рядом сэто выбрать из проекта или иерархии.
0 голосов
/ 07 декабря 2018

Вы переопределяете его в функции запуска.Удалите эту строку или убедитесь, что у вас есть тег Tank для нее.Вы можете просто перетащить целевой объект gameObject и поместить его на целевое поле

Target = GameObject.FindGameObjectWithTag("Tank");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...