原文地址:http://www.rocket5studios.com/tutorials/make-a-2d-game-with-unity3d-using-only-free-tools-part-3/
原版翻译,转载请注明出处:http://blog.csdn.net/ariel7321/article/details/7777157
本节中,我们将加入主角、挂钩一些脚本、给梯子和绳索添加碰撞,最后主角可以在这个关卡里移动。
点击这里查看本节完成后的效果:点我!
制作主角的精灵图集
如果你跟着我这个教程,你肯定会为主角的移动而兴奋,因此我们用TexturePacker先制作一个精灵图集。
Download
the source sprite .png’s,解压到项目中。如果你在第二节中已经做过了就跳过此步骤。
打开TexturePacker ,并将sprites/player目录下的所有.png文件都拖到Sprites面板中。
Texture Settings / Layout:
- 将Algorithm设置成Basic。
- 将Border
Padding设置为1.
- 将Shape
Padding设置为1.
- 不勾选Trim。
Texture Settings / Output:
- 保留Data格式为cocos2d。
- 在Data File中,点击...,将输出保存到项目的Assets下(我保存在Assets/SpriteAtlases),保存为“player”。
- TexturePacker 自动给文件加了后缀.plist,但是Unity需要.xml文件,因此我们将.plist改为.xml。
- Texture File路径应该也被设置成和Data File一样的了。
如果你按照我上面的步骤去做,TexturePacker的设置就如下图所示:
如果你点击Publish,然后切换到unity你就会在项目视图里看到SpriteAtlases文件夹,在此文件夹下看到精灵贴图和精灵数据文件。
我们需要在Unity里做些修改让它看起来正确。
- 在项目视图里选择player.png,在Inspector 中将Filter
Mode改为Point。
- 点击Override
for Web,将Format设置成Truecolor,然后点击Apply。
制作主角精灵
我们用Orthello 2d将主角精灵图集变为动画精灵。
精灵容器:
-
在unity的项目视图,点开orthello:Orthello
–> Objects –> Sprites –> SpriteAtlas,然后将SpriteAtlas-Cocos2D拖到Hierarchy中。
-
在Hierarchy窗口,点开OT->Containers,你会发现出现了一个新的Container,名字类似“Container
(id=-6840)“,这个Container将会包容我们关卡需要的所有的精灵,所有我们可以命名它为“player”。
-
将“player.png”拖放到“OTSprite
Atlas Cocos 2D” 脚本的Texture位置。
-
将“player.xml”拖放到“OTSprite
Atlas Cocos 2D” 脚本的Atlas
Data File位置。
建立主角动画:
-
将Animation对象拖到Hierarchy中Orthello
–> Objects –> Sprites,这将会在OT
–> Animations下添加一个新的对象,名字类似“Animation
(id=-4320)“,将其重新命名为“player anims”。
- 点选刚创立的动画对象,将设置修改为下图所示的。
-
在Framesets下,将Size设置为9.
-
为了填充Container区域,将OT
–> Containers下的player拖放进去。
制作主角精灵
-
然后将Orthello
–> Objects –> Sprites下的AnimatingSprite拖放到Hierarchy中,这会给场景添加一个新的对象,名字类似“Animating
Sprite (id=-23050)“。将名字改为“player“。
-
将“player anims”拖放到“player”的Animation位置。Sprite
Container位置会被自动填上“player”容器对象。如果没有,你可以自己将“player”容器对象拖放到此位置。
-
此时你应该看到player精灵在场景中,如果你播放,你会看到player的动画在一直播放。但我们不希望动画在一开始就播放,所以将Play
On Start的勾选去掉。
给主角添加碰撞检测
为了使主角能正确的和梯子绳子进行碰撞,我们需要做以下设置:
-
选中player,勾选“OTAnimating Sprite”下的Collidable,这会给对象自动添加一个Rigidbody。
- 点开Physics旁的下拉菜单,选择Custom。
- 在Transform中,将Scale Z设为1.
- 将Depth改为-1.
- 在Box Collider中,将Center Y改为-0.1,Z改为1. 将Size X改为0.45, Y改为0.6,Z改为0.4.
如果你按照上面的步骤去做了,那么你将得到下面图示结果:
将Depth改为-1以及将Box
Colider的Z改为1,这会使主角靠近摄像机一些,使碰撞器在Z轴的0位置。这样做有两个效果:首先可以保证主角始终在关卡背景的前面而不会被挡住,其次保证碰撞器在Z轴的0位置使之可以和梯子绳子进行碰撞。这听起来玄乎,但是你看看下图就明白是怎么回事了:
设置射击动画
我们需要添加另外一个动画,当我们按下开火键时,会有子弹从主角身上发出,并撞击地面。
制作射击动画
-
将Orthello –> Objects –> Sprites中的Aniamtion对象拖放到Hierachy中。这会在OT
–> Animations下创建一个新的名字类似“Animation (id=-4320)“的对象,将其重命名为“shoot anims”。
-
点选“shoot anims”对象,将设置设成下图所示。将OT
–> Containers下的level容器拖放到Container区域。
制作射击精灵
-
然后将Orthello
–> Objects –> Sprites下的AnimatingSprite拖放到Hierarchy中,这会给场景添加一个新的对象,名字类似“Animating
Sprite (id=-23050)“。将名字改为“shoot“。
-
将“shoot anims”拖放到“shoot”的Animation位置。Sprite
Container位置会被自动填上“level”容器对象。如果没有,你可以自己将“level”容器对象拖放到此位置。
- 将Transform
Position X设置为-1,这样就会使其位置在主角精灵的左侧。
- 将深度Depth改为-1,这样它始终在关卡背景的前面。
- 将Frame
Index设置为18.
-
此时你应该看到shoot精灵在场景中,如果你播放,你会看到shoot的动画在一直播放。但我们不希望动画在一开始就播放,所以将Play
On Start的勾选去掉。
- 我们只希望在主角真的发射子弹时子弹才出现,所以我们把Mesh
Render给勾掉,隐藏子弹动画,直到我们用脚本来重新打开它。
给子弹精灵加个父节点
我们希望子弹精灵跟随者主角,我们也希望能根据主角的面向来左右翻转这个精灵。
-
创建空对象Object –> Create Empty。
-
将其命名为“shoot
parent”,并是Position在0、0、0位置。
- 在Hierarchy中,将shoot精灵拖放到shoot parent上,使shoot成为shoot parent的子节点对象。
- 将shoot parent对象拖放到player精灵上,使之成为player精灵的子节点对象。
如果你按照我的步骤,你的Hierarchy就跟下图差不多。注意,为了使结构更紧凑,我把所有level相关的对象都放到了一个名为“LEVEL”的空对象下了。
注意:为了使后面的脚本能正确的工作,player下的子节点对象的名字一定要和上图中的一模一样。
添加脚本
我们终于要添加脚本来使主角移动了。
- Download
the player scripts下载脚本,解压到你电脑硬盘中。
- 将里面的脚本拖放到项目的Asset文件夹里。
- 创建一个空游戏对象Game
Object –> Create Empty。
- 将新对象命名为“Scripts”。
- 将xa.cs脚本文件拖放到Scripts对象上。
- 将player.cs和
playerAnims.cs脚本文件拖放到player对象上。
- 确保主角站在一个砖上,这样他不会掉下去。要记住,实际上是主角的Box Collider和其它物体碰撞,而不是可见主角精灵,所以要使主角的位置像0,0,-1(x,y无所谓,但是z一定要保持在-1)。
好了,如果你按照了以上所有步骤,那么此时当你播放这个游戏,你会发现主角能够站在砖上而不会掉下去了。并且当你按键盘上的左右方向键时主角会跟着移动,而且还有动画。
本教程并不解释脚本如何工作的,但是我在脚本里做了注释,希望能帮到你。如果你有任何的疑问,你可以在回复中提问,也可以给我email。
给梯子加碰撞
创建一个梯子碰撞体
- 创建一个Cube,GameObject
–> Create Other –> Cube。
- 将Cube命名为“Ladder”。
- 打开Tag Manager,Edit
–> Project Settings –> Tags。
- 创建“Ladder”和“Rope”两个Tag。
- 让我们再创建一个层Layer “NoDraw”。
- 现在将Ladder对象的Tag改为Ladder,Layer改为NoDraw。
在游戏视图中隐藏梯子碰撞体
- 点击Main Camera。
- 在Camera下面,打开Culling Mask下拉菜单,点掉NoDraw。这样在NoDraw层的物体都不会在游戏视图里看到了。
调整梯子碰撞体的大小和位置
梯子碰撞体需要比可见的梯子大一个单元,这就是说,如果你的梯子有4块拼图片高,那么碰撞体得有5个高。
- 假设你的梯子有4个单位高:选择Ladder碰撞体,将Scale Y改为5.
- 使用Vertex
Snap将Ladder与梯子的底部拐角对齐。
- 你可以复制这个Ladder,然后与其他梯子对齐。
你的Ladder应该跟下图所示一样:
现在你按Play,当主角碰到梯子时,可以上下爬梯子了,可以从梯子的上下两端走出,如果你从梯子中间走出去,也可以从梯子的中间掉下来。
给绳子加碰撞
创建一个绳子碰撞体
- 创建一个Cube,GameObject
–> Create Other –> Cube。
- 将Cube命名为“Rope”。
- 现在将Rope对象的Tag改为Rope,Layer改为NoDraw。
调整绳子碰撞体的大小和位置
绳子碰撞体需要比可见的绳子大一个单元,这就是说,如果你的绳子有4块拼图片长,那么碰撞体得有5个长。
- 假设你的绳子有4个单位长:选择Rope碰撞体,将Scale X改为5.
- 使用Vertex
Snap将Rope与绳子的底部拐角对齐。
- 你可以复制这个Rope,然后与其他绳子对齐。
你的Rope应该跟下图所示一样:
现在你按Play,当主角碰到绳子时,可以左右爬绳子了,可以从绳子的左右两端走出,如果你从绳子中间走出去,也可以从绳子的中间掉下来。
结尾
现在已经完成了主角的所有移动动作了:跑、爬梯子和绳子。下一讲我们将加入计分系统、打破砖块和捡起物体。
你可以下载本项目download
the project up to this point,也可以试玩本项目play
the web version of the project here.
分享到:
相关推荐
Unity3D脚本:Unity3D+Kinect OpenNI开发获取身高2
Unity3D/2D游戏开发从0到1分实战项目篇与开发理论篇。其中,开发理论篇,从初学者容易入门的角度分为上部分(1~14章)与下部分(15~29章)。上部分内容包括游戏历史与Unity发展概述、Unity界面与3D模型入门、Unity...
第2~4章是3个不同特色的3D游戏实例,让读者对Unity游戏开发有一个较全面的认识。第5章是一个2D游戏实例,多方面地介绍了Unity在2D游戏方面的应用。 第6章和第7章,重点介绍了Unity在网络方面的应用。 第8~10章介绍...
unity3d游戏开发 unity3d游戏开发 unity3d游戏开发 unity3d游戏开发 unity3d游戏开发 unity3d游戏开发 unity3d游戏开发 unity3d游戏开发 unity3d游戏开发 unity3d游戏开发 unity3d游戏开发 unity3d游戏开发 ...
Unity + Photon 线上游戏开发入门,是初学者的首要选择,如果一点基础都没有还可以看另一本书,PUNTutorial教程译文
Unity3D游戏开发FBX模型载入与人物行走动画的播放
Unity3D/2D游戏开发从0到1分实战项目篇与开发理论篇。其中,开发理论篇,从初学者容易入门的角度分为上部分(1~14章)与下部分(15~29章)。上部分内容包括游戏历史与Unity发展概述、Unity界面与3D模型入门、Unity...
Unity3D2d游戏开发教程 --- 通过实例介绍如何通过u3d开发2D游戏 在开始本教程之前你需要了解掌握以下工具: • Unity 2 虽然Unity 1.x的用户同样可以学习本教程,但教程中的有些功能只能在Unity 2.x上实现. • 基本...
All Star Character Collection 5.2.unitypackage,Unity3D全明星人物角色模型大合集带200+动作动画U3D游戏素材资源
Unity 3D网络游戏实战(全)+Unity3D手机游戏开发第2版金玺曾+Unity3D游戏开发宣雨松合集压缩包
PPT_Unity 3D游戏开发(第2版).zip 备份用
, 《Unity 2D游戏开发秘籍》涵盖了整个开发过程,从最初的概念、计划、设计到创建和部署游戏的最后步骤,阐述了Unity新集成的2D工具集,涵盖了精灵、2D物理、游戏脚本、音频和动画等主题。本书自始至终专注于使用最...
Unity3D书籍,现在Unity3D书籍很难找,对Unity3D感兴趣的可以下载看看
《Unity3D\2D手机游戏开发(第2版)》以实例教学为主线,循序渐进地介绍了Unity在游戏开发方面的不同功能。第1章,由零开始,引导读者熟悉Unity编辑器的各个功能模块,这部分内容对Unity程序员、美工和策划都有帮助...
Unity3D+ObfuscatorPro v3.9.4中文版+代码混淆+工具包+加密+类名+方法+参数+字段+垃圾代码+命名空间
unity3d手机游戏开发.pdf
Unity3D开发的MMORPG游戏服务器和客户端 Unity3D开发的MMORPG游戏服务器和客户端源码,服务端是用PhotonServer开发,全部解压后900多mb。 所以请不要商用,仅限学习使用
Unity3d源码 街机太空射击战斗游戏开发模板 Space Combat Kit v2.0 Unity商店下载的精品游戏源码 , 适合学习及二次开发使用 , 是个完整的Unitypackage包 , 直接导入到空项目就可以直接查看效果了 Unity3d源码 街机...
[Packt Publishing] C# Unity 3D 游戏开发 初学者指南 (英文版) [Packt Publishing] Learning C# by Developing Games with Unity 3D Beginner's Guide (E-Book) ☆ 图书概要:☆ Learn the fundamentals of C# ...