• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共151篇

    Unity - 游戏引擎

关闭

返回栏目

关闭

返回Unity - 游戏引擎栏目

16 - Component组件 - Collider(碰撞器)

作者:

贺及楼

成为作者

更新日期:2024-05-09 18:12:21

作用:检测碰撞

1、盒碰撞器(Box Collider)
2、椭圆碰撞器(Sphere Collider)
3、胶囊碰撞器(Capsule Collider)
4、车轮碰撞器(Wheel Collider)专用于车辆
5、网格碰撞器(Mesh Collider)
6、地形碰撞器(Terrain Collider)

以炮弹碰撞坦克为例解释

碰撞器(炮弹)

  1. //通过if来判断如果(这个碰撞器)碰撞到tag名为tank的物体时发送Message,执行TakeDamage()
  2. if(collider.tag=="tank"){
  3. collider.SendMessage("TakeDamage");
  4. }

被碰撞代码(坦克)

  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.UI;
  4. public class TankHealth : MonoBehaviour {
  5. public int hp = 100;
  6. public GameObject tankExplosion;
  7. public AudioClip tankExplosionAudio;
  8. public Slider hpSlider;
  9. private int hpTotal;
  10. // Use this for initialization
  11. void Start () {
  12. hpTotal = hp;
  13. }
  14. // Update is called once per frame
  15. void Update () {
  16. }
  17. void TakeDamage() {
  18. if (hp <= 0) return;
  19. hp -= Random.Range(10, 20);
  20. hpSlider.value = (float)hp /hpTotal;
  21. if (hp <= 0) {//收到伤害之后 血量为0 控制死亡效果
  22. AudioSource.PlayClipAtPoint(tankExplosionAudio,transform.position);
  23. GameObject.Instantiate(tankExplosion, transform.position + Vector3.up, transform.rotation);
  24. GameObject.Destroy(this.gameObject);
  25. }
  26. }
  27. }

被碰撞代码的翻译(坦克)

  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.UI;
  4. public class TankHealth : MonoBehaviour {
  5. public int hp = 100;//血量
  6. public GameObject tankExplosion;//坦克爆炸动画
  7. public AudioClip tankExplosionAudio;//爆炸声音
  8. public Slider hpSlider;
  9. private int hpTotal;
  10. // Use this for initialization
  11. void Start () {
  12. hpTotal = hp;
  13. }
  14. // Update is called once per frame
  15. void Update () {
  16. }
  17. void TakeDamage() {
  18. if (hp <= 0) return;
  19. hp -= Random.Range(10, 20);//减伤害
  20. hpSlider.value = (float)hp /hpTotal;
  21. if (hp <= 0) {//收到伤害之后 血量为0 控制死亡效果
  22. AudioSource.PlayClipAtPoint(tankExplosionAudio,transform.position);//爆炸声音
  23. GameObject.Instantiate(tankExplosion, transform.position + Vector3.up, transform.rotation);//坦克爆炸
  24. GameObject.Destroy(this.gameObject);//坦克移除
  25. }
  26. }
  27. }

使用:

碰撞物体(炮弹):
1、加碰撞器,加Collider
被碰撞(坦克):
1、加tag,此处为tank