UGUI制作2D游戏与官方Native2D原工程代码的对比总结

Babybus-u3d技术交流-UGUI制作2D游戏与官方Native2D原工程代码的对比总结

Native2D原工程代码的对比总结
本文只讨论主要功能

人物控制:

1、移动控制

1.png

因为是基于UGUI
上的
2D
游戏开发,我的想法是通过改变图片的
position
来达到移动游戏角色的目的。

UGUI制作2D游戏与官方Native2D原工程代码的对比总结_第1张图片
2.png

在官方工程里,通过给物体添加一个方向力,同时给物体赋予摩擦力材质,来移动角色。当物体当前速度达到一个最大值时,就限制物体的速度。

在操作体验方面,通过改变物体的
position来移动物体略显生硬,通过力来改变物体位移使得物体移动起来更生动流畅。

2、
转身

一般来说,对于一个角色的转身,正常的思路就是将物体绕Y

轴旋转
180
度,可是在
U3D
中, 做
Tranform.rotation =

Quaternion
.
Euler
(
new Vector(0,180,0)
)
操作时,该物体的
ROTATE的X,Y,Z或多或少都会有变化,比如变成 (1.0,178,-1.0)这样的,还有很要命的一点,执行这句语句之后,紧贴地面的物体的碰撞器会嵌入地面的碰撞器,然后悲剧的事情就发生了,角色会被微微的弹开,角色的旋转又改变了,导致结果和我们预期的不一样。

3.png

这是我的解决方案,获得Scale
的相反数,并赋给自身,就达到了转身的效果。不要为我这是为什么,镜像变换啊亲们
......Scale
也是用三维坐标系表示的。

源代码和我差不多,是这样的

UGUI制作2D游戏与官方Native2D原工程代码的对比总结_第2张图片
4.png

3、
跳跃

我学习官方的做法,使用

grounded

Physics2D
.
Linecast
(
transform
.
position
,
groundCheck
.
position
, 1 <<
LayerMask
.
NameToLayer
(
"Ground"
));

在人物和地面之间做一个空物体,放在地面之下,在这之间创建一条射线,如果射线被地面挡住,则可以进行跳跃,如果射线直接没有任何遮挡,说明人物在空中,无法在执行跳跃操作。

UGUI制作2D游戏与官方Native2D原工程代码的对比总结_第3张图片
5.png

怪物
AI:

UGUI制作2D游戏与官方Native2D原工程代码的对比总结_第4张图片
6.png

我的做法是通过
InvokeRepeating

每隔一段时间调用这个函数,改变该物体的速度,比较当前的速度和原来的速度,如果是相反的,就执行转身,大部分想法和角色控制一样。

这是官方的做法:

UGUI制作2D游戏与官方Native2D原工程代码的对比总结_第5张图片
7.png

把两边的墙壁加上标签,一开始给物体随机一个速度,撞到墙上就将速度转向。

这个看项目需求了吧。效果差不多。

杂项:

至于人物死亡,区域检测,计分系统,音效都是基础中的基础,感觉没什么好说的,代码写起来过程虽然不一样,但是结果还是一样的。没什么好说的了。

最后来说说Native2D

Unity3D4.3.4
之后,
U3d
也支持
2D
游戏的制作了,在
2D
中,人物动画可以不需要帧动画这种形式了,美术只要画完原型,导入
U3D
,通过
SPrite Editor

U3D会通过
Alpha
通道来判断图片中物体的区域和大小,把人物分成几个零件,

8.png

然后组合起来,用
Animation来
K
动画,这样程序也能做动画了,很开心 哈哈哈哈 比
2DX
方便多了。
K
完的动画可以用
Mecanim
动画系统来进行组合控制

UGUI制作2D游戏与官方Native2D原工程代码的对比总结_第6张图片
9.png

方便了很多,U3d
也提供了
2D
物理,具体的看开发文档,我感觉
U3D
做起
2D
游戏比
2DX
方便多了。

关于UGUI

使用起来简单方便,会NGUI
就能很快上手,屏幕自适应做的很简单,

UGUI制作2D游戏与官方Native2D原工程代码的对比总结_第7张图片
10.png

使用方便,
UI
中锚点的概念很有趣,有兴趣的可以看官方文档,就是少了
Tween这样的脚本,有些效果要自己写这是蛋疼的地方。

你可能感兴趣的:(UGUI制作2D游戏与官方Native2D原工程代码的对比总结)