Как сделать что бы она стреляла по 1 врагу в зоне свей видимости.
Вот код;
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Turret : MonoBehaviour
{
[SerializeField] private float range = 4f;
[SerializeField] private LayerMask layers;
private Collider2D target;
public float minAngle = -20.0f;
public float maxAngle = 30.0f;
public GameObject ammo;
public Transform shotDir1;
public Transform shotDir2;
private float fireTime = 1f;
public ParticleSystem bullets;
public ParticleSystem flash;
public Transform Spawn;
private void Start()
{
InvokeRepeating("Fire", 0f, fireTime);
}
private void Update()
{
Check();
Look();
var ea = transform.localEulerAngles;
transform.localEulerAngles = ea;
}
void Check()
{
target = Physics2D.OverlapCircle(transform.position, range, layers);
}
void Look()
{
if (target != null)
{
Vector2 direction = target.transform.position - transform.position;
float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
Vector3 LocalScale = Vector3.one;
if (angle > 90 || angle < -90)
{
LocalScale.y = -1f;
}
else
{
LocalScale.y = +1f;
}
transform.localScale = LocalScale;
}
}
void Fire()
{
if (target != null)
{
Instantiate(ammo, shotDir1.position, transform.rotation);
Instantiate(ammo, shotDir2.position, transform.rotation);
Instantiate(flash, shotDir1.position, transform.rotation);
Instantiate(flash, shotDir2.position, transform.rotation);
Instantiate(bullets, Spawn.position, Spawn.rotation);
}
}
private void OnDrawGizmosSelected()
{
Gizmos.DrawWireSphere(transform.position, range);
}
}
using System.Collections.Generic;
using UnityEngine;
public class Turret : MonoBehaviour
{
[SerializeField] private float range = 4f;
[SerializeField] private LayerMask layers;
private Collider2D target;
public float minAngle = -20.0f;
public float maxAngle = 30.0f;
public GameObject ammo;
public Transform shotDir1;
public Transform shotDir2;
private float fireTime = 1f;
public ParticleSystem bullets;
public ParticleSystem flash;
public Transform Spawn;
private void Start()
{
InvokeRepeating("Fire", 0f, fireTime);
}
private void Update()
{
Check();
Look();
var ea = transform.localEulerAngles;
transform.localEulerAngles = ea;
}
void Check()
{
target = Physics2D.OverlapCircle(transform.position, range, layers);
}
void Look()
{
if (target != null)
{
Vector2 direction = target.transform.position - transform.position;
float angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
Vector3 LocalScale = Vector3.one;
if (angle > 90 || angle < -90)
{
LocalScale.y = -1f;
}
else
{
LocalScale.y = +1f;
}
transform.localScale = LocalScale;
}
}
void Fire()
{
if (target != null)
{
Instantiate(ammo, shotDir1.position, transform.rotation);
Instantiate(ammo, shotDir2.position, transform.rotation);
Instantiate(flash, shotDir1.position, transform.rotation);
Instantiate(flash, shotDir2.position, transform.rotation);
Instantiate(bullets, Spawn.position, Spawn.rotation);
}
}
private void OnDrawGizmosSelected()
{
Gizmos.DrawWireSphere(transform.position, range);
}
}