举盾牌小怪:(标签为Shield,而非Enemy)
1.固定区域巡逻;
2.前后无法攻击、受伤;
3.发现玩家主动攻击;
4.玩家仅能下落攻击对其造成伤害。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ShieldM : Enemy
{
private Rigidbody2D rb;
public Transform leftpoint, rightpoint;
public float Speed;
private bool Faceleft = true;
private Transform target;
[SerializeField] private float attackRange;
private Animator anim;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody2D>();
transform.DetachChildren(); //断绝左右节点与怪的父子关系(使预设好的左右节点能固定位置)
target = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
Movment();
if (Vector2.Distance(transform.position, target.position) < attackRange)
{
anim.SetBool("isAttack", true);
}
else
{
anim.SetBool("isAttack", false);
}
}
void Movment()
{
anim.SetTrigger("IDLE");
if (Faceleft)
{
rb.velocity = new Vector2(-Speed, rb.velocity.y);
if (transform.position.x < leftpoint.position.x)
{
transform.localScale = new Vector3(-1, 1, 1);
Faceleft = false;
}
}
else
{
rb.velocity = new Vector2(Speed, rb.velocity.y);
if (transform.position.x > rightpoint.position.x)
{
transform.localScale = new Vector3(1, 1, 1);
Faceleft = true;
}
}
}
}