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]
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都生效。
所以,忠告就是:对于像我这种刚开始入门的新手来说,实现书上说的内容时,还是从新开一个工程,或者保证工程的设置是默认设置没有更改过为好。
本来想说今天学习一下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]
Gravity | The amount of gravity applied to all Rigidbodies. Usually gravity acts only on the Y-axis (negative is down). Gravity is meters/(seconds^2). |
[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都生效。
所以,忠告就是:对于像我这种刚开始入门的新手来说,实现书上说的内容时,还是从新开一个工程,或者保证工程的设置是默认设置没有更改过为好。
相关文章推荐
- 学习 "使用cocos2d-x3.0和物理引擎实现碰撞检测" 中出现的一个问题
- JAVA学习日志 坦克游戏 解决了对象数组的问题,检测碰撞,随机下落速度,计时,线程终止
- unity3D学习之物体添加刚体及碰撞。
- Unity3D学习之(碰撞检测)
- unity3d 学习笔记_____Native2d 刚体、碰撞器、关节的使用
- Unity学习日常问题记录二-关于刚体的碰撞和物理材质(设定了材质不反弹的一种错误)
- 【Unity3D】学习笔记(第7记)射线碰撞检测
- 看了书后,照着书上的方法一步一步去做,却失败了,555 真是的,写书的人啊,却不考虑一下细节问题 新建一个目录 [liu@liu-desktop hellomod]$mddir hellomod [liu@liu-desktop hellomod]$cd
- Unity3D学习之(碰撞检测小项目)
- 如何解决新建一个包的时候,工具帮生成了多个包的问题?
- sql_mode导致初始化mariadb-10.0.6失败的一个问题
- 一个与小球碰撞有关的有趣问题
- Unity3D - 用更通俗的方式来教你理解刚体和碰撞体
- 新建schedule task碰到的一个问题
- Unity3D连接MSSQL以及遇见的一个问题
- 一个框架解决几乎所有机器学习问题
- samba需求,请建一个目录,所有用户都可以修改其中的任意文件(新建文件的权限问题)
- HBase的一个非常恶心的问题---create失败的解决办法
- SpriteKit:开启物理逐像素(Per-Pixel)碰撞检测后发现的问题及解决
- Unity3D----导入模型的碰撞检测