Unity Colliders

Unity中常用的碰撞器

通常Colliders会与Rigidbody一起使用,没有添加碰撞体的刚体会彼此相互穿过。

常用碰撞体有以下几种:

Box Collider:

盒子碰撞体,是一个立方体外形的碰撞体,可调整为不同大小的长方体,一般可用作门,墙及平台等,也可用于交通工具的外壳。最适合的是使用在盒子和箱子上。

选项:

? Is Trigger:触发器,勾选后可用于触发事件,且将被物理引擎所忽略。

? Material:材质,采用不同的Physics Material决定了碰撞体与其他对象的交互形式。

? Center:碰撞体在对象局部坐标的中的位置

? Size:可调整碰撞体的大小

? Sphere Collider:球形碰撞体,是一个基于球体的碰撞体,可用作石头,乒乓球等

? Radius:调整球形碰撞体的半径,没有了Size属性。

Capsule Collider:

胶囊碰撞体,由一个圆柱体两端分别连接两个半球体组成,可用在Character Controllers,或与一些其他不规则形状的碰撞结合来使用。

选项:

? Height:高度。

? Direction:方向,默认是Y轴

Mesh Collider:

网格碰撞体,通过获取网格对象并在其基础上构建碰撞器,与其他碰撞体相比,网格碰撞体更加精细,但会占用更多系统资源。只有在开启Convex属性才可以与其他的网格碰撞体发生碰撞。

选项:

? Smooth Sphere Collisions:平滑碰撞,开启此项碰撞会变得平滑,因此在平滑的表面建议开启此选项。

? Mesh:网格,获取对象的网格并将其作为碰撞体。

? Convex:凸起,勾选后可以与其他的网格碰撞起发生碰撞。

? 注意:网格碰撞器可以与所有的碰撞体发生碰撞,但要与其他的网格碰撞体发生碰撞必须开启Convex属性,且只有当网格碰撞体网格的三角形数量少于255的时候Convex属性才会生效。

Wheel Collider:

车轮碰撞体,是一种针对地面车辆的特殊碰撞体,它有内置的碰撞检测,车轮物理系统,滑胎摩擦参考体。除了车轮也可用于其他对象。

选项:

? Mass:车轮碰撞体的质量。

? Radius:车轮碰撞体的半径大小。

? Suspension Distance:车轮碰撞体的最大悬挂距离,根据局部坐标Y轴向下延伸。

? Center:轮胎碰撞体的局部坐标的中心。

? Suspension Spring:车轮的悬挂弹簧,通过添加弹簧和阻力使得悬挂达到目标位置。

? Spring:弹簧,弹簧力度越大,悬挂到达目标的位置也就越快。

? Damper:阻力器,阻尼器控制着悬挂的速度,数值越大,悬挂弹簧移动的速度越慢。

? Target Position:悬挂沿着其方向上的静止时的距离。

? Forward Friction:当轮胎向前滚动时的摩擦力属性。

? Extremum Slip:滑动极值

? Extremum Value:极限值

? Asymptote Slip:滑动渐进值

? Asymptote Value:渐进值

? Stiffness Factor:刚性因子

? Sideways Friction:当轮胎侧向滚动时的摩擦力属性。

? 同Forward Friction一样有5个可设置值

车轮碰撞检测是通过从局部坐标Y轴向下投射一条射线来实现的,车轮有一个通过悬挂距离向下延伸的半径,可通过脚本中不同的属性值来对车辆进行控制。这些属性值有motorTorque(马达转矩)、brakeTorque(制动转矩)和steerAngle(转向角)。与其他物理引擎的碰撞体相比,车轮碰撞体是通过一个基于滑动摩擦力的参考体来单独计算摩擦力的。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-07 19:17:51

Unity Colliders的相关文章

UNITY物理系统[Colliders]

UNITY_Colliders 照常推荐Unity官方文档 本篇文章是介绍在游戏开发过程中,常用的物理组件(Box Collider,Rigidbody等)介绍一些基本的作用,和一些需要规避的地方. Box Collider Box Collider形状类似于箱子,所以也经常使用在地板,墙壁,坡道上:也是组合碰撞器用的最多的一种. 属性 功能 Is Trigger 如果启用,此碰撞器用于触发事件,并被物理引擎忽略. Material 物理材料,确定与他们互动的方式 Center 碰撞器在物体空间

碰撞器与触发器[Unity]

请看原帖,移步:Unity3d碰撞检测中碰撞器与触发器的区别 要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动.碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞.如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过. 物体发生碰撞的必要条件: 两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体. 在unity3d中,能检测碰撞发生的

Unity之CharacterController 碰撞问题总结

CharacterController 不会受到scene的重力影响,自带物理碰撞检测,在脱离导航网格的应用场景下(比如飞行),是很有优势的Unity原生工具组件.如果在复杂的应用场景里,会有多种CC碰撞检测的需求,记录下我碰到的三种碰撞需求和解决方案. 一.和场景碰撞器 需要产生碰撞效果,让CC停止.只需要在场景里刷上碰撞器,并加上OnControllerColliderHit回调,处理逻辑. 二.和UI碰撞器 CC遇到UI上的BoxCollider也会产生碰撞效果,有个小招是把UI的Coll

【Unity】11.7 布料

分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 Unity提供了两种布料组件:交互布料(Interactive Cloth).蒙皮布料(Skinned Cloth).为人形动画添加布料组件后,就可以利用布料渲染器将其渲染出来. 二.交互布料(Interactive Cloth) 交互布料组件(Interactive Cloth)可在一个网格上模拟类似布料的行为状态,如果希望在场景中使用布料,可以用这个组件来实现. 1.添加交互布料组件 添加交互布料组件的方法如下:

Unity 实现物体破碎效果(转)

感谢网友分享,原文地址(How to Make an Object Shatter Into Smaller Fragments in Unity),中文翻译地址(Unity实现物体破碎效果) In this tutorial I will show you how to create a simple shattering effect for your Unity game. Instead of just "deleting" a crate (or any other obje

使用Unity创造动态的2D水体效果

者:Alex Rose 在本篇教程中,我们将使用简单的物理机制模拟一个动态的2D水体.我们将使用一个线性渲染器.网格渲染器,触发器以及粒子的混合体来创造这一水体效果,最终得到可运用于你下款游戏的水纹和水花.这里包含了Unity样本源,但你应该能够使用任何游戏引擎以相同的原理执行类似的操作. 设置水体管理器 我们将使用Unity的一个线性渲染器来渲染我们的水体表面,并使用这些节点来展现持续的波纹. unity-water-linerenderer(from gamedevelopment) 我们将

Unity 制作滚动物品界面

Unity 制作滚动物品界面: 第一种方式: (panel的方式实现) 1. 创建一个GameObject(A),添加UIPanel和UIScrollView           2. 物品放入A中,添加Drag Scroll View 和 box Colliders(一般是添加一个Grid,物体放入Grid,把Grid放入A) 注意事项: 1. 动态加载的物品坐标不正确,使用Grid组件Reposititon(),进行更新 代码实现: using UnityEngine; using Syst

【Unity】第11章 第三人称角色控制器和碰撞体

分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 第三人称视角控制器涉及的相关概念有: 1.刚体(Rigidbody). 2.碰撞体(Collider).包括球体碰撞体(Sphere Collider).箱体碰撞体(Box Collider).网格碰撞体(Mesh Collider).物理材质(Physics Material).铰链关节(Hinge Joint).弹簧关节(Spring Joint)等. Unity内置了 NVIDIA PhysX 物理引擎.要控制

unity初探之黑暗之光(2)

unity初探之黑暗之光(2) 一.设置角色跟随鼠标点击移动 思路:使用charactercollider的SimpleMove方法来控制角色的移动.通过摄像机的射线投射到地面,通过屏幕上的一个点也就是鼠标单击的点.该射线与地面发生碰撞返回发生碰撞的点,然后让角色转向该点,开始移动.当移动到一定范围时停止移动. 使用到的方法: Camera.ScreenPointToRay 屏幕位置转射线 function ScreenPointToRay (position : Vector3) : Ray