When the enemy character shoots, the bullet won’t go to the position of my player.
The Enemy Script:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy : MonoBehaviour
{
public float speed;
public float stoppingDistance;
public float retreatDistance;
private float maxDistance;
public int maxEnemyHealth;
private float timeBTWShots;
public float startTimeBTWShots;
public Transform eFirePoint;
private Transform player;
public GameObject projectile;
public float projectileSpeed;
private Vector2 target;
private void Start()
{
player = GameObject.FindGameObjectWithTag("Player").transform;
target = new Vector2(player.position.x, player.position.y);
maxDistance = stoppingDistance + retreatDistance * 2;
timeBTWShots = startTimeBTWShots;
}
private void Update()
{
if(Vector2.Distance(transform.position, player.position) > stoppingDistance)
{
transform.position = Vector2.MoveTowards
(transform.position, player.position, speed * Time.deltaTime);
}
if(Vector2.Distance(transform.position, player.position) < retreatDistance)
{
transform.position = Vector2.MoveTowards
(transform.position, player.position, -speed * Time.deltaTime);
}
if(Vector2.Distance(transform.position, player.position) <= maxDistance
|| Vector2.Distance(transform.position, player.position) == maxDistance)
{
EnemyShoot();
}
}
private void EnemyShoot()
{
if(timeBTWShots <= 0)
{
GameObject eBullet = Instantiate
(projectile, eFirePoint.position, eFirePoint.rotation);
projectile.transform.position = Vector2.MoveTowards
(transform.position, target, projectileSpeed * Time.deltaTime);
timeBTWShots = startTimeBTWShots;
}
else
{
timeBTWShots -= Time.deltaTime;
}
if(transform.position.x == target.x && transform.position.y == target.y)
{
Destroy(projectile);
}
}
public void TakeDamage(int damage)
{
maxEnemyHealth -= damage;
if(maxEnemyHealth <= 0)
{
Destroy(gameObject);
}
}
}