unity简单小球下落

来源:互联网 发布:linux统计目录文件数 编辑:程序博客网 时间:2024/04/30 12:00

一、设置地面
在前面一章的动态加载角色中有对地面的设置,包括如何更改颜色,所以这里不做解释了。
二、设置小球的预制体
在层级列表,右键3D Object->Sphere(这里可以适当的新建几个小球放在第一个新建的小球的下面,并调整他们的位置,使其看起来美观,当然,如果为了方便也可以不做这个操作)
三、加载小球的预制体
通过OnGUI做了一个按钮,然后通过点击按钮动态加载小球。
我是通过for循环依次动态加载了十个小球。并且为了方便代码的管理,我编写了两个脚本,一个是用来加载小球,另一个是用来判断时间和进行销毁的。
在这里解释一下,加载小球的脚本我是挂在了在层级列表新建的空的GameObject上,这样保证了在游戏启动的时候当运行到我空的游戏对象的脚本时就可以运行他身上所挂的脚本(这里和unity的运行机制相关了)
四、开启计时
在我自己写的接口里面,获取了当时的时间作为初始时间,且将延时时间通过这个接口传进来的,一会上代码就可以看明白,很简单的。
五、设置延时时间
我的想法是在开始计时的那一刻为起始时间了,所以当执行小球身上所挂的Update的接口时,我通过此时的时间减去开始计时的时间,当它大于我所规定的延时时间时,给小球动态增加刚体,关闭计时。
六、在规定延时时间内给小球一次动态加载刚体,并关闭计时
在六里面写了。有点重复了(主要是注意逻辑顺序,捋清了,就很简单啦)
七、球体消失
当小球下落碰到地面时,会自动消失。
我是通过触发器做的。将地面设置成为触发器,(即把地面中的BoxCollider的isTriggger打上勾),当触发接口的参数的名字为“Plane”(地面)时,销毁小球。
八、错误总结
将碰撞矩阵中的不需要碰撞的物体的勾除掉,从而可以忽略球体之间的碰撞,注意勾选后,将地面的layer修改一下(可以自己新建一个layer,也可以勾选其他和你忽略的不一样的层级,只要不一样就可以),避免将地面与球体的碰撞也忽略了从而球体无法消失。
这里写图片描述

这里写图片描述

最后上代码,很简单的~
循环加载小球的脚本,并传入延时时间(实参)

设置延时时间的脚本
这里写图片描述
小球销毁的脚本
这里写图片描述

如果写的有错误,欢迎评论指正,谢谢…..

原创粉丝点击