敌人

敌人生命值:

  • 生命值降低:内置字段health值降低
  • 敌人受伤音效:AudioSource类的PlayClipAtPoint函数
  • 敌人倒地:Animator的SetBool函数
  • 玩家得分:GameManager类的AddScore函数
  • 敌人消失:GameObject类的Destory函数

敌人攻击

  • 检测玩家是否处于攻击范围:OnTriggerStay函数
  • 攻击间隔:Time类的deltaTIme属性累加计时
  • 抬手击打动画:Animator类的SetBool函数
  • 攻击音效播放:AudioSource类的PlayClipAtPoint函数
  • 玩家受伤掉血:GameManager类的PlayerTakeDamage函数
在Unity中实现敌人功能可以包括多个方面,例如创建敌人角色、碰撞检测、随机生成敌人以及实现追踪行为等。以下是一些关键步骤和代码示例: ### 创建敌人角色 创建敌人的过程与创建玩家角色类似,通常需要添加动画控制器和碰撞体组件。此外,为了使敌人能够响应物理效果,还需要为其添加刚体组件。 ```csharp // 示例代码用于检测碰撞并销毁特定标签的敌人 private Animator animator_0; private void OnCollisionEnter2D(Collision2D collision) { // 碰撞了相应标签 && 处于下落标志位 if (collision.gameObject.tag == "eagle" && animator_0.GetInteger("jumping") == 2) { Destroy(collision.gameObject); Debug.Log("消灭了老鹰eagle"); } } ``` 这段代码展示了如何使用`OnCollisionEnter2D`方法来检测碰撞,并且只有当碰撞对象具有特定标签并且动画状态满足条件时才会触发销毁动作[^1]。 ### 随机生成敌人 可以通过编写脚本来实现在指定位置随机生成敌人。此脚本应该附加到包含所有可能生成点的空游戏对象上。 ```csharp private Transform[] trf; // 创建随机点位置数组 public GameObject go; // 敌人预制体,自己拖拽 public int enemyCount = 0; // 敌人数量 void Start() { int count = this.transform.childCount; // 获得随机点的数量 trf = new Transform[count]; // 实例化数组 for (int i = count - 1; i >= 0; i--) // 将敌人的位置存入数组 { trf[i] = transform.GetChild(i).transform; } } private float CreatTime = 1f; // 第一次创建敌人的时间 void Update() { CreatTime -= Time.deltaTime; // 开始倒计时 if (CreatTime <= 0 && enemyCount < 4) // 倒计时为0并且敌人数量小于4 { GameObject go2 = Instantiate(go, trf[Random.Range(0, trf.Length)].position, Quaternion.identity); // 创建敌人 CreatTime = 3; // 后续敌人每3秒出来一次 enemyCount++; // 敌人数量加1 Destroy(go2, 4f); // 存在4秒后消失 enemyCount--; // 敌人消失后,数量减1 } } ``` 上述脚本演示了如何在设定的时间间隔内在不同的位置生成敌人,并且控制敌人的总数不超过一定限制[^2]。 ### 实现追踪行为 为了让敌人能够追踪玩家,需要让敌人获取玩家的位置,并朝向该位置移动。 ```csharp public class Gensui : MonoBehaviour { public Transform qiu; // 放小球,跟随 private Vector3 fangxiang; // 一个三维坐标 public float speed = 5f; // 给一个追踪速度 void Update() { fangxiang = transform.position - qiu.position; // 物体与小球的位置差 fangxiang.y = 0; // y轴方向上的位置不需要改变 transform.Translate(-fangxiang * speed * Time.deltaTime); // 根据你的位置决定方向 } } ``` 这段代码展示了一个简单的追踪逻辑,其中敌人会沿着玩家的方向移动,但不会改变其Y轴位置[^3]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值