unity3d,学习坦克大战后的总结笔记
在此记录,以防遗忘。在尝试独立制作坦克大战时遇到了一些意想不到的问题,现做一下汇总。
一、Mesh Colider下的Convex选项
Convex的中文意思是凸面体(有道词典)。Convex勾选后,unity会将碰撞体的凹凸面自动补平,这也是为什么勾选后,进不去模型的凹面区域的原因。参考百度知道(Unity3d 中MeshCollider组件下Convex勾选有什么用?)
二、取消自动渲染(unity版本号5.6.5f1)
将Auto Generate勾选掉即可,但之后场景中的部分模型会有大面积的黑色,这时点击上图右侧的Generate Lighting按钮即可为场景渲染一次。
三、Awake函数和Start函数的区别、Update函数和FixedUpdate函数
网上有很好的解释,这里引用一篇个人认为不错的文章。引用作者silent-bobo的文章
Update函数的执行次数会受电脑的性能影响。而FixedUpdate函数是按照一定时间周期执行的,不会受电脑性能影响。所以一般FixedUpdate函数用来进行一些物理模拟的语句。
四、物体的速度,角速度设置
两者的设置均是Rigibody组件下的设置,均为Vector3类型数据。
五、Find函数_查找游戏物体
相关解释参考作者Teng的世界的一篇相关文章。
六、物体销毁时实例化例子系统、播放声音
由于执行GameObject.Destroy函数后整个物体都会消失,其中的声音组件或粒子系统也会瞬间消失导致无法正常使用。所以一般使用AudioSource.PlayClipAtPoint函数(在某位置播放声音)或GameObject.Instantiate()函数(物体实例化)来完成目标。
七、发送消息 SendMessage函数
发送消息后会执行对应的物体的函数。
碰撞时如果对方的Tank标签是"Tank",那么就向对方发送TankDamage的消息,对方应有名为TankDamage方法。我会在以后的学习中更加深入了解SendMessage函数。
先记录这些吧。