Я писал код который делает так что бы башня стреляла по врагам, (я по гайду если что делал) я проверял 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;
}
}
Это все коды, сейчас будут скрины префабов.