Unity 3D学习笔记(5)物体的碰撞/触发检测

前言

在学习了刚体组件后,我们看到了物体的物理效果,比如重力,碰撞等等,那么该如何检测他们之间的碰撞呢?
在Unity中,有碰撞检测和触发检测两种类型,他们的简单概括如下:


一、碰撞检测

1.如何使用碰撞检测

在3D物体上,添加刚体组件,即可实现该物体的碰撞,但地面,障碍物等往往不需要添加刚体就可以与你的对象发生碰撞,为什么不直接将所有物体都加上刚体组件呢,是为了减少计算机的开销,这样只需要设置一半的刚体组件就可以实现碰撞检测。
刚体碰撞可以模拟一定的物理效果,比如速度快的时候可以撞飞起来等等,但是无论撞什么那碰撞的一瞬间都会有物理效果,会对当前速度造成一定损失。

碰撞检测的条件:

  • 发生碰撞的两个物体至少有一个带有刚体组件。
  • 发生碰撞的两个物体都必须带有碰撞器组件。
  • 持续碰撞的回调方法需要有相对运动才有调起。
    如果带有刚体的物体不发生运动,刚体会处于休眠状态,系统不会进行碰撞检测的,如果带有刚体的物体运动,刚体会一直处于活动状态,碰撞检测才会进行。

2.检测碰撞的方法

unity中检测碰撞的方法如下,enter为碰撞一瞬间时会调用的函数,stay为碰撞持续过程中会调用的函数,exit为碰撞结束的一瞬间会调用的函数。

     // 碰撞开始
     void OnCollisionEnter(Collision collision) {
       
     }
 
     // 碰撞结束
     void OnCollisionExit(Collision collision) {
 
     }
 
     // 碰撞持续中
     void OnCollisionStay(Collision collision) {
 
     }

碰撞检测基本用于所有的物理效果模拟上,在碰撞的不同阶段去实现不同的游戏逻辑。

二、触发检测

1.如何使用触发检测

触发检测的条件:

  • 两个物体都需要有碰撞器。
  • 至少有一个物体是挂载刚体。
  • 其中一个的box collider组件勾选Is Trigger。

触发检测和碰撞检测虽然都可以检测到两个物体是否发生接触,但是有一些区别,比如碰撞发生时,两个物体会模拟物理效果,会弹开等等,但触发发生时,运动的物体会直接穿过对方。

还有上文提到碰撞会让两个物体有物理效果,所以在设计一些吃豆豆等行为时,当游戏对象触碰到豆豆时,豆豆被销毁,但玩家还是会受到物理效果,会明显地顿一下,这并不是我们想要的结果,因为我们只要玩家在吃到豆豆时销毁豆豆并加分就可以,所以这是就需要触发检测,这样触碰到豆豆销毁他的同时,玩家角色的行动还不会受到碰撞影响。

2.触发检测的方法

触发检测的函数方法与碰撞检测基本相同,使用的参数不同,需要注意,如下所示:

     // 开始接触
      void OnTriggerEnter(Collider collider) {
        
     }
 
     // 接触结束
     void OnTriggerExit(Collider collider) {
         
     }
 
     // 接触持续中
     void OnTriggerStay(Collider collider) {
        
     }

总结

碰撞的检测是unity中很重要的一个知识点,基本上所有的游戏都离不开碰撞的检测,无论是2D还是3D游戏,只是3D中碰撞器的设置可能比2D复杂一点。

  • 3
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习Unity3D时,以下是一些重要的笔记: 1. Unity3D基础知识: - 游戏对象(Game Objects)和组件(Components):了解游戏对象的层次结构和组件的作用。 - 场景(Scenes)和摄像机(Cameras):学会如何创建场景并设置摄像机视角。 - 材质(Materials)和纹理(Textures):掌握如何创建和应用材质和纹理。 - 动画(Animations):学习如何创建和控制游戏对象的动画。 2. 脚本编程: - C#语言基础:了解C#语言的基本语法和面向对象编程概念。 - Unity脚本编写:学习如何编写脚本来控制游戏对象的行为和交互。 - 常见组件和功能:掌握常见的Unity组件和功能,如碰撞器(Colliders)、刚体(Rigidbodies)、触发器(Triggers)等。 3. 游戏开发流程: - 设计游戏关卡:了解如何设计游戏场景和关卡,包括布局、道具、敌人等。 - 游戏逻辑实现:将游戏规则和玩家交互转化为代码实现。 - UI界面设计:学习如何设计游戏中的用户界面,包括菜单、计分板等。 - 游戏优化和调试:优化游戏性能,解决常见的错误和问题。 4. 学习资源: - Unity官方文档和教程:官方提供了大量的文档和教程,逐步引导你学习Unity3D。 - 在线教程和视频教程:网上有很多免费和付费的Unity教程和视频教程,可根据自己的需求选择学习。 - 社区论坛和博客:加入Unity开发者社区,与其他开发者交流并获取帮助。 通过系统地学习这些内容,你将能够掌握Unity3D的基础知识并开始开发自己的游戏项目。记得不断实践和尝试,不断提升自己的技能!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值