@NoobNoob2

Скрипты не работают, в чем проблема?

Я писал код который делает так что бы башня стреляла по врагам, (я по гайду если что делал) я проверял 30 минут что не так, я все писал как нужно было но все равно это не работало. И да, я назначил все скрипты на префабы.
Вот гайд: https://www.youtube.com/watch?v=AzKgQPocbes&t=1636s
Вот код пули
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class bulletTower : MonoBehaviour
{

    public float Speed;

    public Transform target;

    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    { 
      transform.position = Vector3.MoveTowards(transform.position,target.position,Time.deltaTime*Speed);
        
    }
}

Вот код башни и так же зоны действия:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Tower : MonoBehaviour
{
    public Transform shootElement;

    public Transform LookAtObj;

    public float dmg = 5;

    public float shootSpeed;

    public GameObject bullet;

    public Transform target;

    public float shootDelay;

    bool IsShoot;


    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        if (target)

        LookAtObj.transform.LookAt(target);

        if (!IsShoot)

        StartCoroutine(shoot());

       

    }






   


    IEnumerator shoot()
    {
       IsShoot = true;
       yield return new WaitForSeconds(shootDelay);
       GameObject b = GameObject.Instantiate(bullet, shootElement.position, Quaternion.identity) as GameObject;
       b.GetComponent<bulletTower>().target = target;
       IsShoot = false;
    }

}

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

public class TowerTrigger : MonoBehaviour
{


    public Tower twr;

    public bool lockE;

    public GameObject curTarget;

    void OnTriggerEnter(Collider other)
    {

        if (other.CompareTag("enemyCube") && !lockE)
        {
            twr.target = other.gameObject.transform;
            curTarget = other.gameObject;
            lockE = true;
        }

    }

    void Update()
    {
        if (!curTarget)

        lockE = false;
    } 
    void OnTriggerExit(Collider other)
        {
         
            if (other.CompareTag("enemyCube") && other.gameObject == curTarget) 
           
            lockE = false;

           
       }       
              
            
}

Это все коды, сейчас будут скрины префабов.
610fb7938872e190436404.png

610fb79bde99a375684035.png

610fb7a3ae566825428963.png
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
E1ON
@E1ON
Programming, Gamedev, VR
Плохо переписали)) Не многовато ли энтеров?
if (target)

LookAtObj.transform.LookAt(target);

if (!IsShoot)

StartCoroutine(shoot());


Автор урока выложил исходники на google drive в описании видеоурока.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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