using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
[SerializeField]
private FloatingJoystick joystick;
[SerializeField]
private float moveSpeed;
private Rigidbody2D rBody2D;
[SerializeField]
private Bullet bullet;
GameObject closestEnemy = null;
float closestDistance = Mathf.Infinity;
private bool attackState;
private float delayTime;
// Start is called before the first frame update
void Start()
{
rBody2D = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");
foreach (GameObject enemy in enemies)
{
float distanceToEnemy = Vector3.Distance(this.transform.position, enemy.transform.position);
if (distanceToEnemy < closestDistance && closestEnemy != enemy)
{
closestEnemy = enemy;
closestDistance = distanceToEnemy;
}
}
float h = joystick.Direction.x;
float v = joystick.Direction.y;
delayTime += Time.deltaTime;
this.rBody2D.MovePosition(this.transform.position + (new Vector3(h,v,0) * moveSpeed * Time.deltaTime));
if (closestEnemy != null)
{
if (new Vector2(h,v) == Vector2.zero)
{
if (delayTime > 0.5f)
{
delayTime = 0;
LaunchProjectile();
}
}
}
Debug.Log(delayTime);
}
public void LaunchProjectile()
{
Bullet bu = Instantiate(bullet);
bu.transform.position = this.transform.position;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Bullet : MonoBehaviour
{
private Rigidbody2D rb;
GameObject closestEnemy = null;
float closestDistance = Mathf.Infinity;
private float moveSpeed = 1.0f;
private void Start()
{
rb = GetComponent<Rigidbody2D>();
}
private void Update()
{
GameObject[] enemies = GameObject.FindGameObjectsWithTag("Enemy");
foreach (GameObject enemy in enemies)
{
float distanceToEnemy = Vector3.Distance(this.transform.position, enemy.transform.position);
if (distanceToEnemy < closestDistance && closestEnemy != enemy)
{
closestEnemy = enemy;
closestDistance = distanceToEnemy;
}
}
Vector2 dir = (this.closestEnemy.transform.position - this.transform.position).normalized;
this.transform.Translate(dir * moveSpeed * Time.deltaTime);
}
public GameObject IsEnemy()
{
return closestEnemy;
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy : MonoBehaviour
{
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.tag == "Bullet")
{
Destroy(collision.gameObject);
}
}
}