首先把敌人拖拽的场景中,前面我们对它设置完所有组件,目前只需要编译脚本来实现敌人进行攻击即可。
创建敌人攻击脚本EnemyAttack,并且挂载到敌人的组件身上。
代码实现:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class EnemyAttack : MonoBehaviour { // Start is called before the first frame update //敌人的攻击力 private int Enemyattack=10; //攻击冷却时间 public float EnemyattackColdTimer = 1f; //找到玩家组件 GameObject Player; //玩家的生命值 PlayerHP PlayerHP; //是否在攻击范围内的标准 bool isRange; //计时器 float time; //玩家死亡后敌人的动画 Animator anim; void Start() { //找到玩家对象 Player = GameObject.FindGameObjectWithTag("Player"); PlayerHP = Player.GetComponent<PlayerHP>(); anim = GetComponent<Animator>(); } // Update is called once per frame void Update() { //计时一帧一帧的计算 time+=Time.deltaTime; //如果在范围内并且计时器的时间大于冷却时间就进行攻击 if (time>EnemyattackColdTimer && isRange) { //计算机累计时间归零 time = 0; //执行敌人攻击 PlayerHP.SelfDamage(Enemyattack); } //如果玩家死亡,敌人执行这个动画 if (PlayerHP.currentHP <= 0) { anim.SetTrigger("PlayerDie"); } } //检测 碰撞器碰到的 其他的碰撞体 private void OnTriggerEnter(Collider other) { //如果检测到 碰撞到Player if (other.gameObject == Player) { //在范围内 isRange = true; } } private void OnTriggerExit(Collider other) { //如果检测到 离开Player if (other.gameObject == Player) { //不在范围内 isRange = false; } } }
代码图片:
上面代码顺序不一样,可能会导致运行出错,如需要得进行完整性使用,才能保证项目正常运行。如出错请认真检查并且通过调整看看是否能达到效果。如有更好的方法,请在下方留言!谢谢你的观看!!!
----------------------------------------------------------END-----------------------------------------------------------------