Unity对周围固定距离的怪物造成伤害并击飞的解释

问题:  手雷碰到地面对周围5米的敌人造成伤害并击飞(并且距离手雷越近伤害越大击飞越远)

 

难点:正常情况下我一般都是利用GameObject.FindGameObjectsWithTag()先获取所有的怪物然后计算每个怪物与Player距离,然后再去处理,但明显过于消耗资源

 

解决办法:public static Collider[] OverlapSphere(Vector3 position, float radius);

(返回值为所有的colider(包括自己和地面)

position中心点(这里指手雷)

radius范围(这里是5米))

 

贴下代码

  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现怪物被攻击后追击玩家并对玩家造成伤害,可以按照以下步骤进行操作: 1. 给怪物添加一个动画控制器,并为其创建一个追击玩家的动画状态。 2. 在怪物的脚本中,需要添加一个追击玩家的函数,该函数需要获取玩家的位置信息,并将怪物移动到玩家的位置。 3. 在怪物的脚本中,需要添加一个攻击玩家的函数,该函数需要在怪物与玩家接触时触发,并对玩家造成伤害。 4. 在玩家的脚本中,需要添加一个受到攻击的函数,该函数需要在玩家与怪物接触时触发,并减少玩家的生命值。 示例代码: 怪物脚本: ``` public class Monster : MonoBehaviour { public float moveSpeed = 5f; // 移动速度 public float attackDamage = 10f; // 攻击伤害 private Transform player; // 玩家位置信息 void Start() { player = GameObject.FindGameObjectWithTag("Player").transform; } void Update() { ChasePlayer(); } // 追击玩家 void ChasePlayer() { transform.position = Vector3.MoveTowards(transform.position, player.position, moveSpeed * Time.deltaTime); transform.LookAt(player); } // 攻击玩家 void AttackPlayer() { player.GetComponent<Player>().TakeDamage(attackDamage); } // 与玩家接触时触发 void OnCollisionEnter(Collision collision) { if (collision.gameObject.CompareTag("Player")) { AttackPlayer(); } } } ``` 玩家脚本: ``` public class Player : MonoBehaviour { public float health = 100f; // 生命值 // 受到攻击时触发 public void TakeDamage(float damage) { health -= damage; if (health <= 0f) { Die(); } } // 死亡 void Die() { // 处理玩家死亡的逻辑 } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值