You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RatAttack2D/Assets/Scripts/Enemy_Frog.cs

104 lines
2.7 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy_Frog : MonoBehaviour
{
public bool canMove;
BoxCollider2D PL;
Rigidbody2D RB;
Animator Ani;
public LayerMask G;
public GameObject Tung;
GameObject Tunge;
LineRenderer LR;
public float wait;
public Transform ShootPoint;
private void Start()
{
RB = transform.GetComponent<Rigidbody2D>();
Ani = transform.GetComponent<Animator>();
LR = transform.GetComponent<LineRenderer>();
canMove = true;
wait = -2;
}
private void Update()
{
if(Tunge != null)
{
LR.positionCount = 2;
LR.SetPosition(0, ShootPoint.position);
LR.SetPosition(1, Tunge.transform.position);
}
else
{
LR.positionCount = 0;
}
if(wait > 0)
{
wait -= Time.deltaTime;
}
if (!canMove)
{
return;
}
if (PL == null)
{
FindPlayer();
}
else
{
GotPlayer();
}
}
private void FindPlayer()
{
if(Physics2D.OverlapCircle(transform.position, 100f, G))
{
PL = Physics2D.OverlapCircle(transform.position, 100f, G).transform.GetComponent<BoxCollider2D>();
}
}
private void GotPlayer()
{
if (!Physics2D.OverlapCircle(transform.position, 100f, G))
{
PL = null;
return;
}
if (Vector2.Distance(transform.position, PL.bounds.center) >= 60f)
{
JumpToPlayer();
return;
}
if(wait < 0 && wait != -1)
{
Attack();
wait = -1;
}
}
private void Attack()
{
Ani.Play("Frog_Shoot");
canMove = false;
}
private void JumpToPlayer()
{
if((PL.bounds.center - transform.position).normalized.x > 0)
{
transform.rotation = new Quaternion(0, 180, 0, 0);
}
else
{
transform.rotation = new Quaternion(0, 0, 0, 0);
}
RB.AddForce(new Vector2((PL.bounds.center - transform.position).normalized.x * 10, 30), ForceMode2D.Impulse);
Ani.Play("Frog_Run");
canMove = false;
}
public void shoot()
{
Tunge = GameObject.Instantiate(Tung, ShootPoint.position, Quaternion.AngleAxis((Mathf.Atan2((ShootPoint.position.y - PL.bounds.center.y), (ShootPoint.position.x - PL.bounds.center.x)) * Mathf.Rad2Deg) + 180, Vector3.forward));
Tunge.GetComponent<Frog_Tung>().setDmg = 5;
Tunge.GetComponent<Frog_Tung>().OwnTag = transform.tag;
}
}