网站不被收录的原因,电影院做羞羞的网站,wordpress锚文本插件,个人证书查询网入口免费Unity自学之旅03 Unity自学之旅03#x1f4dd; 碰撞体 Collider 基础定义与作用常见类型OnCollisionEnter 事件碰撞触发器 #x1f917; 总结归纳 Unity自学之旅03
#x1f4dd; 碰撞体 Collider 基础
定义与作用
定义#xff1a;碰撞体是游戏中用于检测物体之间碰撞的组… Unity自学之旅03 Unity自学之旅03 碰撞体 Collider 基础定义与作用常见类型OnCollisionEnter 事件碰撞触发器 总结归纳 Unity自学之旅03 碰撞体 Collider 基础
定义与作用
定义碰撞体是游戏中用于检测物体之间碰撞的组件或区域。它通常是一个虚拟的形状附加在游戏对象上用于定义该对象的碰撞边界和物理交互范围。作用主要用于实现游戏中的物理交互效果比如当两个游戏对象的碰撞体发生重叠时游戏引擎可以检测到这种碰撞事件并根据设定执行相应的操作如触发伤害计算、推动物体、触发机关、播放碰撞音效等使游戏中的物体之间能够产生真实或符合游戏逻辑的交互。
常见类型
盒状碰撞体Box Collider形状为长方体适用于具有规则矩形外形的物体如建筑物、箱子等。在 2D 游戏中它是一个矩形区域在 3D 游戏中则是一个长方体空间。球形碰撞体Sphere Collider呈球形常用于模拟具有圆形外形的物体的碰撞如球类、角色的头部等。在计算碰撞时以球心和半径来确定碰撞范围。胶囊碰撞体Capsule Collider类似胶囊形状一般用于角色的身体碰撞检测它可以很好地适应角色的移动和旋转能更自然地与其他物体发生碰撞交互。多边形碰撞体Polygon Collider可以根据物体的实际外形自定义碰撞边界由多个顶点组成多边形。对于形状不规则的物体如树叶、不规则的石头等使用多边形碰撞体可以更精确地定义其碰撞区域。复合碰撞体Compound Collider由多个不同形状的碰撞体组合而成用于构建复杂形状物体的碰撞模型。例如一辆汽车可能由多个盒状碰撞体和球形碰撞体组合成复合碰撞体来准确模拟汽车不同部位的碰撞情况。
OnCollisionEnter 事件
当两个带有碰撞体的GameObject碰撞时两个对象都会注册一个OnCollisionEnter事件其中包含对撞到对象的引用。
例子为Health_Pickup添加碰撞处理事件达到player碰撞health_pickup时拾取效果。
public class ItemBehavior : MonoBehaviour
{// 发生碰撞时被调用void OnCollisionEnter(Collision collision){if(collision.gameObject.name Player){// 销毁当前物体Destroy(this.transform.gameObject);Debug.Log(碰撞销毁);}}
}碰撞触发器 概念 碰撞触发器是一种特殊的碰撞体与常规碰撞体不同它主要用于检测物体之间的重叠情况而不一定会产生物理上的碰撞效果如阻止物体穿透等。当两个带有碰撞触发器的游戏对象重叠时会触发特定的事件开发人员可以在脚本中定义这些事件的响应逻辑从而实现各种游戏功能比如触发剧情、获取道具、进入特定区域等。 常见用法 触发剧情或任务在游戏场景中设置特定的区域当玩家角色进入该区域时通过碰撞触发器触发一段剧情动画或开启一个新任务。收集道具为游戏中的道具添加碰撞触发器当玩家角色与道具重叠时触发收集逻辑将道具添加到玩家的物品栏中。场景切换在不同场景的交界处设置碰撞触发器当玩家接近或进入该触发器区域时触发场景切换的逻辑将玩家传送到新的场景。 与碰撞体的区别 物理效果碰撞体主要用于模拟真实世界中的物理碰撞会阻止物体相互穿透产生碰撞反弹等物理效果。而碰撞触发器侧重于检测物体之间的重叠状态不会产生直接的物理碰撞效果物体可以相互穿透。事件触发碰撞体通过OnCollisionEnter等方法来处理碰撞事件通常在两个物体发生物理碰撞时触发。碰撞触发器则通过OnTriggerEnter等方法来触发事件当两个物体的触发区域重叠时就会触发。
如何使用Unity中的碰撞触发器需要为其添加一个Collider组件常用的有胶囊碰撞体…,然后触发器的话需要勾选Is Trigger 属性将其设置为触发器。设置为触发器之后事件监听变为 OnTriggerEnter OnTriggerExit OnTriggerExit .
为了练习触发器完成一个案例设置Enemy敌人当玩家player进入到该区域时生成警报日志提示
首先创建一个胶囊体为其添加红色材质并放置于世界中心然后碰撞体勾选Is Tirgger.
public class EnemyBehavior : MonoBehaviour
{void OnTriggerEnter(Collider other){if(other.name Player){Debug.Log(玩家进入警戒范围);} }void OnTriggerExit(Collider other){if (other.name Player){Debug.Log(玩家离开警戒范围);}}
}总结归纳
Collider组件通过RigidBody组件与其他Collider组件或对象交互
如果Collider组件不是触发器则充当具有实体的对象如果Collider组件是触发器则可以被穿过。通过勾选 “Is Trigger” 属性可从物理碰撞模式切换到触发模式触发OnTriggerEnter、OnTriggerStay和OnTriggerExit等事件方便实现非物理交互逻辑。