unity 2d地图插件 TildMap 怎么设置某个地图块的碰撞

unity怎样使用Physics2D.BoxCast()函数检测一个碰撞体,我要详细但简单的一个例子,谢谢。_百度知道
unity怎样使用Physics2D.BoxCast()函数检测一个碰撞体,我要详细但简单的一个例子,谢谢。
我有更好的答案
To be detailed but a simple example
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Unity3D 官方文档 2D游戏的起始2 2D物理 全局设置与刚体 - 暗光之痕的博客 - CSDN博客
Unity3D 官方文档 2D游戏的起始2 2D物理 全局设置与刚体
Unity官方文档
版本:unity 2017.1& 语言:C#
Unity2D物理引擎是基于Box2D的,嘛,在这一点上cocos也不例外,其他的软件要做2D物理效果的话基本上也会用该引擎。Box2D本身是一个免费开源的物理引擎,由C++编写而成。
https://github.com/erincatto/Box2D,Github上有官方实例,可以下下来玩玩。
2D物理的设置:
通过打开Edit -& Project Settings -& Physics 2D就可以设置全局的2D物理效果,以下是默认设置的截图:
Gravity:作用于所有拥有Rigidbody2D组件游戏对象的重力值,该值一般来说是y轴的负半轴方向;
Default Material:默认的Physics Material 2D物理材质,用于Collider 2D,该材质只有两种数值:Friction摩擦系数、Bounciness弹力系数;
Velocity Iterations:决定速度影响的迭代次数,值越高,物理模拟越精确,但CPU消耗也越大;
Position Iterations:决定位置影响的迭代次数,值越高,物理模拟越精确,但CPU消耗也越大;
Velocity Threshold:速度阈值,速度在该值之下的GameObject会被视为非弹性碰撞;
Max Linear Correction:最大线性矫正,用于防止过冲;
Max Angular Correction:最大角速度校正,用于防止过冲;
Max Translation Speed:Rigidbody 2D最大的线性速度;
Max Rotation Speed:Rigidbody 2D最大的角速度;
Min Penetration For Penalty:(2017版中可设置,以后如果是2017的特性,直接表明2017)Collider之间分离前的最小渗透半径;
Baumgarte Scale:解决重叠问题的缩放因子;
Baumgarte Time of Impact Scale:同上,重叠问题的因子;
Time to Sleep:Rigidbody 2D静止状态多久时间(单位秒)后进入睡眠状态;
Linear Sleep Tolerance:线性速度阈值,决定多少速度以下算是静止状态;
Angular Sleep Tolerance:角速度阈值,决定多少角速度以下算是静止状态;
Queries Hit Triggers:Collider 2D被标记为Trigger后,任何的物理查询是否能触发Trigger,类似Linecast、Raycast,勾选则会触发;
Queries Start In Colliders:勾选此框的情况下,在Collider 2D内部时射线检测会返回该Collider,否则不会;
Change Stops Callbacks:勾选此框时,当Collider被移出或删除,碰撞反馈会立即停止;
Callback On Disable:官方截图上没有,但确实有该属性。意思应该是Disable时会回调。后两个参数我没有测试,貌似是针对一帧内调用,个人感觉没什么特别的用处,保持默认就好;
Layer Collision Matrix:层碰撞矩阵,勾选之间的层能产生碰撞。
Rigidbody 2D:
与3D的刚体有区别,Rigidbody 2D有三种类型,但是实现的功能是一样的,而且运动的物体同样在Collision Detection中选择Continuous,不然运动物体过快的话可以直接穿过去。
相比于3D刚体3个轴上都可以运动,Rigidbody 2D只能在x、y轴上运动,而随着z轴旋转,当然横版游戏角色的话,一般会选择Freeze Rotation Z冻结Z轴上的旋转。
官方文档是从最复杂的动态刚体开始介绍的,让我们反着来。
? Static 静态刚体
静态刚体就像是个拥有无限质量的物体固定在那边一样,它只会与Dynamic的其他刚体发生碰撞,两个静态刚体的碰撞是没有效果的。如下图所示,能调节的属性十分有限:
Body Type:肯定是Static,所以才是静态刚体;
Material:选择物理材质,物理材质按照以下顺序查找:
1.Collider 2D本身的物理材质;
2.Rigidbody上的物理材质;
3.全局设置下的物理材质。
&&&&一直有个疑惑是如果上面都没有设置,那么物理材质会选择哪个,测试下来应该是这样的,默认是摩擦系数0.4、弹力系数0。
Simulated:是否在当前的物理环境中模拟,取消勾选该框类似于Disable Rigidbody,但使用这个参数更加高效,因为Disable会销毁内部产生的GameObject,而取消勾选Simulated只是禁用。
? Kinematic 动力学刚体
动力学刚体不受重力和力的影响,而受用户的控制,需要使用类似Rigidbody2D.MovePosition、Rigidbody2D.MoveRotation的方法。它于静态刚体一样,只与动态刚体会发生碰撞。
嗯,而且质量应该算是无限大,所以它在运动的时候会撞开所有的动态刚体。
Body Type:Kinematic表明是运动学刚体;
Material:同上;
Simulated:同上;
Use Full Kinematic Contacts:启用该选项后,它的行为会类似于动态刚体与其他所有刚体都发生碰撞,但它还是手用户控制的,并且拥有无限大的质量。
Collision Detection:建议选择Continuous,不然速度过快时,物体会直接穿过去,嘛,当然要保证这样运动连续的话,CPU的一点点性能贡献是必要的。
Sleeping Mode:
&&&&1.Never Sleep,禁用睡眠状态,尽量不要使用该选项,会影响系统资源;
&&&&2.Start Awake,初始状态是醒着的;
&&&&3.Start Asleep,初始状态是睡眠状态,当然会被其他碰撞而唤醒。
Interpolate:改变物体移动时内插值的行为,如果物体移动时发生了抖动现象,请使用该参数。
&&&&1.None,不使用平滑插值;
& & 2.Interpolate,根据上一帧的位置进行插值;
& & 3.Extrapolate,根据下一阵的位置进行插值。
Constraints:用于冻结x、y轴的移动或z轴的旋转。
? Dynamic 动态刚体
动态刚体会与其他的所有刚体发生碰撞,注意不要主动修改Transform的位置和角度,刚体内部会自动使用速度来模拟移动。需要时请使用Force函数来进行移动、旋转。
Body Type:Dynamic表明是动态刚体;
Material:同上;
Simulated:同上;
Use Auto Mass:勾选该选项框后,Rigidbody 2D可以自动根据Collider生成质量;
Mass:物体的质量;
Linear Drag:线性速度阻力;
Angular Darg:角速度阻力;
Gravity Scale:重力影响的缩放因子;
Collision Detection:同上;
Sleeping Mode:同上;
Interpolate:同上;
Constraints:同上。
这样看下来,对比很清晰吧,动力学刚体和动态刚体就区别在于动态刚体多了质量和阻力值。
又写了五页了,还以为一篇直接能把2D后面的全介绍了。不过要做的话还是认真点吧,Collider、Joint和Effector就留到下一篇。
Unity正式进入2017了文档也更新了,我这边也就顺势推到2017了,其实没太大更新,Sprite功能继续完善,然后Animation出了个录像功能,还蛮好用的。
最近自己也算是跌到了低谷,投了大概一个月的简历,Unity的面试邀请一次都没有,失败吗?自己到底哪里不足了?自省之下却得不出个答案。
不过现在想想那又怎样?失败了,那又怎么样?现在的失败不过未来成功后的调料而已,一帆风顺的人生有什么意思?一个游戏中你的能力已经秒天秒地秒空气了又有什么意思?
真的感觉很抱歉呢,我在日漫中其他什么都没有学到,只学到了一点,即使被打倒了一百次,也要在第一百零一次的时候站起来。而我现在不过是第一次失败罢了。
想想纵使黑暗之魂这样对新人恶意满满的游戏,我都跨过了,还有什么跨过不了的?到最后扒开里面的各种恶意都成了趣味。所以生活的恶意尽管来,退却了一步算我输,我会让你看到我的执念!
相关文章推荐1 / 40 椤

我要回帖

更多关于 unity2d 游戏地图路障 的文章

 

随机推荐