unity3d,学习坦克大战后的总结笔记

在此记录,以防遗忘。在尝试独立制作坦克大战时遇到了一些意想不到的问题,现做一下汇总。

一、Mesh Colider下的Convex选项

       Convex的中文意思是凸面体(有道词典)。Convex勾选后,unity会将碰撞体的凹凸面自动补平,这也是为什么勾选后,进不去模型的凹面区域的原因。参考百度知道(Unity3d 中MeshCollider组件下Convex勾选有什么用?)

二、取消自动渲染(unity版本号5.6.5f1)

      unity3d,学习坦克大战后的总结笔记unity3d,学习坦克大战后的总结笔记

      将Auto Generate勾选掉即可,但之后场景中的部分模型会有大面积的黑色,这时点击上图右侧的Generate Lighting按钮即可为场景渲染一次。

三、Awake函数和Start函数的区别、Update函数和FixedUpdate函数

       网上有很好的解释,这里引用一篇个人认为不错的文章。引用作者silent-bobo的文章    

       Update函数的执行次数会受电脑的性能影响。而FixedUpdate函数是按照一定时间周期执行的,不会受电脑性能影响。所以一般FixedUpdate函数用来进行一些物理模拟的语句。

四、物体的速度,角速度设置

        两者的设置均是Rigibody组件下的设置,均为Vector3类型数据。

五、Find函数_查找游戏物体

       相关解释参考作者Teng的世界的一篇相关文章。

六、物体销毁时实例化例子系统、播放声音

        由于执行GameObject.Destroy函数后整个物体都会消失,其中的声音组件或粒子系统也会瞬间消失导致无法正常使用。所以一般使用AudioSource.PlayClipAtPoint函数(在某位置播放声音)或GameObject.Instantiate()函数(物体实例化)来完成目标。

七、发送消息 SendMessage函数

       发送消息后会执行对应的物体的函数。

unity3d,学习坦克大战后的总结笔记

碰撞时如果对方的Tank标签是"Tank",那么就向对方发送TankDamage的消息,对方应有名为TankDamage方法。我会在以后的学习中更加深入了解SendMessage函数。

先记录这些吧。