这次的敌人在之前最简单的蝙蝠精的基础上加上了远程攻击行行为。
主要行为逻辑:
1.在两点间飞行;2.发现玩家后对玩家进行远程攻击
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyBat11 : Enemy
{
public Transform wayPoint01, wayPoint02;
private Transform wayPointTarget;
[SerializeField] private float moveSpeed;
[SerializeField] private float attackRange; //攻击范围
private SpriteRenderer sp; //翻转
private Transform target;
private Animator anim;
public GameObject Followers;
private void Start()
{
wayPointTarget = wayPoint01;
sp = GetComponent<SpriteRenderer>();
//确定玩家位置
target = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();
anim = GetComponent<Animator>();
}
private void Update()
{
//玩家是否进入攻击范围
if (Vector2.Distance(transform.position, target.position) < attackRange)
{
anim.SetBool("isAttack", true);
}
else
{
anim.SetBool("isAttack", false);
Patrol();
}
}
private void Patrol()
{
//速度
anim.SetBool("Fly", true);
transform.position = Vector2.MoveTowards(transform.position, wayPointTarget.position, moveSpeed * Time.deltaTime);
//两点巡逻
if (Vector2.Distance(transform.position, wayPoint01.position) <= 0.01f)
{
wayPointTarget = wayPoint02;
sp.flipX = false; //朝右
}
if (Vector2.Distance(transform.position, wayPoint02.position) <= 0.01f)
{
wayPointTarget = wayPoint01;
sp.flipX = true; //朝左
}
}
public void Shot()
{
Instantiate(Followers, transform.position, Quaternion.identity);
}
}