您的位置:首页 > 移动开发 > Unity3D

unity3d刚体和碰撞检测学习一:新建一个plane和一个sphere,却碰撞检测失败的问题

2014-04-01 02:31 387 查看
郁闷,今天被这个问题搞了一个下午,弄到现在,记录一下:

本来想说今天学习一下unity3d中的物理的,学到刚体和碰撞这一章,就想说先在场景里面摆一个平面(plane)和一个球体(sphere),然后让球体落下来砸在平面上然后反弹,看各种效果,步骤如下:

一、新建一个plane对象,此时这个对象默认有一个Mesh colider碰撞组件。

二、新建一个sphere对象,放置于plane对象之上,此时该对象有一个sphere colider碰撞组件,然后呢再给它添加一个刚体组件rigidbody,之后运行程序。

问题就来了:

一、球没有下落,后来查了半天,才发现是重力没设置(这个待会儿再说为啥没设置,默认新建一个工程是有的),点击Edit->Project Settings->Physics,打开[b]The
Physics Manager
物理管理器,如图:[/b]

[b]


[/b]



[b]设置那个Y值,一般重力我们都只设置这个y值的,下面这句摘自官网:[/b]


GravityThe amount of gravity applied to all Rigidbodies. Usually gravity acts only on the Y-axis (negative is down). Gravity is meters/(seconds^2).
OK,设置之后,球倒是可以落下了,但又来了个问题。

[b]二:球径直穿过了平面,没有任何碰撞和反弹?[/b]

[b]这个就有点郁闷了,各种查啊,试啊,最后终于搞明白了,还是上面那个物理管理器设置得有问题,看见俺那个Layer
Collision Matrix没,就是下面那个矩阵。
[/b]

[b]那里定义了层与层之间的碰撞关系,每个对象都属于一个层级,如下图:[/b]

[b]


[/b]



[b]上面那个矩阵定义了哪两个层级之间是开启了碰撞检测的,两个层级之间如果没有开启碰撞检测(就是上面那个矩阵对象的复选框没有勾上),那么属于这两个层级的物体都不会有碰撞检测。我就是创建的两个物体都属于Default层级,但Default与Default层级之间没有开启碰撞,类似下图:[/b]



[b]


[/b]

所以就没有碰撞,把Default和Default之间的那个复选框勾选上后就有碰撞和反弹了。

其实默认,新建一个工程时这几个默认层级之间都是有碰撞关系的。下面就来说说我为啥工程里面都不是默认值。

原因很简单,就是我这个工程是从网上下下来的Demo,直接用Unity打开了,而这个Demo把工程的物理管理器设置给改了,结果导致了我今天的悲剧。这个也说明了这个物理管理器的设置是针对工程生效的,就是说只要你把这个设置改了后,无论你在这个工程里面新建多少个Scene,这个物理管理器的设置对那个Scene都生效。

所以,忠告就是:对于像我这种刚开始入门的新手来说,实现书上说的内容时,还是从新开一个工程,或者保证工程的设置是默认设置没有更改过为好。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐