Unity3D学习——(二)愤怒的小鸟项目总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/UnSkyToo/article/details/9158157

花了几天时间,边做愤怒的小鸟,边熟悉Unity3D


今天做完了,算是对Unity3D开发2D游戏有了一个了解


Unity3D确实强大了,省了很多功夫。


说说在开发过程中遇到的难题:

(一)没有用第三方的2D开发插件

我是自己弄个Panel来替代的

由于Panel默认是躺着的。。。所以所有的GameObject需要先  X旋转90°  Y旋转180°

本来是没有问题的,可后来发现:当我需要把一个GameObject(也是Panel)旋转到面向右边时

我本以为只是把Z轴的旋转角度改为90°就可以了的啊。。可后来发现不是这么回事


好像是因为这是世界坐标系,之前的X和Y都旋转了,当再次旋转Z的时候,不是我们想的那样了


后来自己计算了下,发现改为X:0 Y:-90 Z:90才对(与我预想的X:90 Y:180 Z:90不一样的)


(二)脚本使用的不熟悉

比如当小鸟在弹弓上的时候,需要忽略碰撞(不然会和弹弓已经其它小鸟碰在一起)。

当时不知道怎么做,后来查找才发现有两种方法

Physic.IgnoreCliision(GameObject obj1, GameObject ojb2);
这个方法是让物理引擎忽略掉obj1和obj2的碰撞

还有一种

设置gameObject.rigidbory.isKinematic = true;

这是让物体只受脚本的影响,物理引擎不能影响

然后可以设置物体的isTrriger为true,表示这是一个触发器(只接受碰撞事件,但不会阻碍物体穿过它)


(三)Unity3D功能不熟悉

之前不知道Unity3D有动画编辑系统

小鸟跳上弹弓的动画是自己写代码弄的。。。后来才知道的。。。


在计算得分的时候,之前检测木板的碰撞就得分

后来发现一个木板可以碰很多次。

加了限制也不好使。。。

后来网上找到方法

原来可以写个脚本,用来动态检查gameObject的位置是否改变巨大

遇过改变的距离大于一个值,就表示木板动了

然后把这个脚本赋值给所有木板。。。。。

这方便多了





总结:

通过这个游戏,学到了不少知识

不只是了解了Unity3D的基本界面,还学会使用GUI,Prefab等等


发现自己不足之处,太缺乏3D方面的知识,坐标旋转啊。。。本地坐标,世界坐标。。感觉有些混乱


继续学习Unity3D 等有了新的体会,或者新的知识,再来和大家分享

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页