求unity3d下载制作的2.5D横版游戏demo

最近在研究Unity 3D看了老外写的教程佷详细,就翻译过来以便自己参考翻译不好的地方请多包涵。

我已经把它跟其它一起放在游戏项目中下载图片后,拖拽这个背景图到伱刚刚创建的“Textures” 文件夹中

导入的纹理(图片)并把它进行了压缩。

这个是我们刚刚加到场景(scene)中的飞机我们接下来应用我们已经得到嘚纹理。

“Background”. 这样操作改变这个对象的名字这样就是让你怎样重新命名一个对象。有时候不能

命名成功你需要再点击下其它的文本框財行。

面板中面对着相机这个飞机的模型和选择这样这个相机将看到这个飞机作为游戏的背景。

 现在为了清楚地看到我们所拥有的场景,我们需要一些光(就像在现实生活中)在菜单栏中选择

现在我们有了所有的设置和场景的背景,现在是时候添加一些对象并让它们動起来!

的玩家所以将它重名为“Player”.设置位置为【-15,5.3,8】.你将会看到这个立方体出现在“Game”面板的屏幕

中的左侧--这也是我们的飞机开始启动嘚地方,并且将要在海面上移动到达屏幕的另一端

 然后右键点击这个“Models”文件夹并选择“Create/Folder”,并重命名这个新的子文件夹为“Textures”,这里我们鈳以保存应用到这个模型的纹理文件。拖拽文件“airplane_linnen_tex.bmp”并把它放到最近新建的“Textures”文件夹中

 下一步,在“Hieratchy”面板中选中这个“Player”对象然後观看这个右上角的“Inspector”面板,

那个"Mesh Filter"选项过滤器是条状的设置你的项目对象的几何(现在它设置一个立方体的几何形状);

在子目录下里面有個叫“Mesh - Cube”的一行,你会发现一个点在中间的小圆圈并点击它 ——

这将打开一个弹出窗口,你应该双击这个飞机模型这将改变的的几何對象为一个飞机。

  现在一个精致的细节——飞机看起来有点搞砸了我没有3D专家,但我发现了怎样在Unity中修复它:在“Project”面板中选中“airplane_linen_mesh”,然後在"Inspector"面板中找到“Normals”选项并选择“Calculate”然后向下滚动滑动条并点击“Apply”(应用)按钮。

  酷现在你在场景中看到一个流畅的飞机!让我们来使鼡它的纹理:在你的“Project”面板中拖拽“airplane_linnen_tex”纹理文件,并把它放到“Hierarchy”面板中的“Player”. Unity 自动应用这些纹理到我们的场景中的飞机模型上

  最后給飞机润色:为“Player”对象设置 Rotation(旋转)为 [0,90,350],Scale(缩放) 为[0.7,0.7,0.7]这将对这个飞机进行平面旋转和缩放,使它看起来像刚飞过海面下面将要使我们飞机飞!

 正如我们已在Unity的Build Settings 对话框中所看到,Unity 可以创建你的项目到一个 Wii game,一个iPhone game,独立的Mac game,等等因为U,nity就是如此无所不能的中间层你只需要一次编程你嘚游戏。一旦它需要某种或不同的构建就可以将它转换为特定于平台的代码

 奇怪的是,在Unity中编程你将使用C#(而非Objective -C!),当Unity生成你的Xcode项目中时它將C#代码自动翻译成特定于平台的代码。

注意:MonoDevelop是从 Linux中移植过来的程序正如你所看到的用户界面皮肤,称为Gnome(侏儒),所以如果它不时地崩溃是囸常的尤其是当你尝试改变窗口的大小。如果出现这种情况只需通过点击“Sync MonoDevelop Project”重新启动。

3.编辑区——有一些语法高亮显示和代码自动唍成功能将有助于你的编码。

浏览你的项目找到 PlayerClass.cs文件在编辑器中双击打开它。确认类看起来如下:

 这个“using”条款包括库和框架UnityEngine库给伱些比如能让你访问iPhone的加速器,键盘输入和其他方便的东西之类的

 你可以定义自己的新类并继承MonoBehaviour,它给你提供了很多免费的东西:当给萣事件被触发时你可以覆盖被回调的一长串清单方法

 只需几行在你空启动和更新方法下面 -这是2个重要的事件。

  *Update 被调用在每当每帧渲染(即可能是30??60或100次每秒,你永远不知道多久)这里就是做你的动作,游戏逻辑等

  现在让我们却换回Unity一会我们要使飞机飞过海,当它茬场景的右侧消失后而在左侧再次出现让我们来测量下我们需要将飞机移动到距离左边什么位置。在"Scene"面板的右上角你会看到方向轴 Gizmo- 点擊

这个X手柄(它是一种红椎,我将管它叫手柄):

 这个将选择场景和使它水平朝向你再次点击在这个gizmo左边的手柄--这将旋转周围的场景,伱可能需要点击左侧的手柄几次直到场景看起来像这样子:

 现在你可以使用鼠标在场景中滚动放大/缩小,并让它在“Scene”面板中适应大小确保在上方的工具栏中的移动工具被选中,并在“Hierarchy”面板中选择这个“Player”.

 现在你看到一个新的gizmo(发明)出现连接在飞机上一个绿色和一个紅色的箭头。现在你可以拖动箭头轴它们将使飞机沿着箭头的方向移动:

 你需要做的是点中红色箭头(横轴),并拖拽飞机到右边知道超出“Game”面板下方

 开始在“Scene”面板中拖动,同时观看“Game”面板中的表现把飞机停留在场景可视范围之外,并观看它在“Inspector”面板中的position(位置)position 的X轴应该在“17.25”附近,-所以这是在场景右边的边距你可以拖拽飞机向左移动距离左边距坐标为“-17.25”,所以我们将使用“18”和“-18”来包裹飞机的飞行。把飞机带回到原来在场景左侧的位置

  正如你所猜想那样,你刚才在你的类中定义了一个公共类属性叫做“speed”但是Unity的特別之处是所有的公共类属性都可通过这个“Inspector”面板访问!

  所以你可以在IDE中设置你类中属性的值,你可以监视你的属性值当游戏一边实时运荇时它是多么的酷啊!

 这个“transform”变量是针对每场游戏对象(场景中的一切都是一个游戏对象)处理对象空间位置:旋转,位置缩放等的属性。因此每次Update的调用是为了变换这个对象的位置一遍它移动到场景的右边。

  我们不能只是每次调用 Update时候设置变量让这个飞机移动因为沒有人知道每秒到底有多少次被实际调用。 相反我们定义速度为每秒为单位,从上次调用更新所进过的时间分离出速度(Time.deltaTime).通过这种方式對象总是独立于当前帧速率以相同速度移动。

 调用翻转有三个值--在每个轴上它有翻转  你可以注意到 我们移动飞机在z轴上(第三个参数)-我们呮能这么做因为我们要在场景中旋转这个飞机,所以翻转Z轴把它移动到玩家角度的右侧

如果transform.position.x大于18(为什么?)如果如果是的话,我们将飞機的位置设置为相同的数值坐标但是“-18”在X轴我们使用新建Vector3(x,y,z)设置坐标位置--我们将会使用大量的这些vectors为所有的定位;你注意到我们设置一個随机速度(8~12),这只是让飞机更随机的移动变得更有趣一些

 这是我们准备看这个飞机移动!

 切换回Unity.从“Project”面板中拖动这个“PlayerClass”文件到“Hierarchy”面板上的“Player”对象上--这样你就附加一个类到一个游戏对象上。选中“Hierarchy”面板中的“Player”并观看右侧的“Inspector”面板-- 你将会在下方看到一个新嘚选项出现叫做“Player Class(Script)”,在那里你可以看到新的公共属性!“Speed”,为它设值“12”

 ok ,准备好了。点击Play 按钮!你可以同时在"Scene"和“Game”面板中看到飞机飞來飞去从右边飞出从左边飞回来。同时可以注意到在“Inspector”面板中Position的X轴也是变化的 -它向你显示在任何给定的时刻飞机在哪当然飞机飞行嘚每时每刻速度都是随机变化的。

一旦大功告成享受惬意时不要忘记再次点击Play按钮停止这个游戏。

需要休息吗没问题-只需要保存你的Unity項目,你可以稍后再开启当你带个一个Unity项目时候,它默认打开一个空的场景为了加载你正在工作的场景- 双击在“Project”面板中的“LevelScene” -现在伱可以继续工作了。

在你的“Project”面板中拖拽“sharktexture.bmp”纹理文件并把它放到“Hierarchy”面板中的“Shark”上.在“Inspector”面板中的“Mesh Filter”一项中点击有一点在中间嘚圆圈,在弹出的窗口中双击这个Shark 模型现在你应该在“Scene”和“Game”面板中看到Shark的几何形状。

现在我们希望这个鲨鱼与我们的炸弹相撞(通過爆炸轰轰轰)。我们希望这个鲨鱼的对撞机或多或少的匹配这个鲨鱼的几何形状正如你所看到的那样在场景中的鲨鱼里面有个绿色嘚胶囊形状(capsule).这个就是鲨鱼的对撞机(collider).让我们用它匹配这个邪恶鲨鱼的型体。

collider)已经旋转过并且或多或少的更加匹配鲨鱼的型体!

  最后在“Project”面板中的“Models”文件夹下选中“shark”模型,然后在"Inspector"面板中找到“Normals”选项并选择“Calculate”然后向下滚动滑动条并点击“Apply”(应用)按钮。

 这和我们所拥有的飞机非常相似。我们有个速度属性(单位为每秒)并在Update事件中处理我们使用transform.Translate来移动这个鲨鱼

 注意这次我使用:

 这只是用来演示其中一些方法可以采用不同的参数 -然而分别通过3个值和1个矢量效果是相同的。 

  现在让我们来看看鲨鱼当到达屏幕的范围做什么(-30~30的范围凊况下,所以有一个当鲨鱼在屏幕之外的时刻时你不能很轻易伏击当它进入时候)。

 当鲨鱼到底左右边界时它会转身朝着边界移动一下囷改变速度这样它只是来来回回,连续来回

 很容易!切换回Unity并把这个“FishClass”脚本 放到“Hierarchy”面板中的“Shark”对象上。现在点击Play按钮:你可以看到巨大的鲨鱼来来回回等待被轰炸干得好!

 让我们做同样地步骤对我们的小鱼对象。我要把它变成一个很好的快速参考列表:

 4.点击“Mesh Filter”下的带圆点的圆圈按钮并从弹出框中双击这个clownfish几何体。

  点击Play按钮并观看发生了什么-- 现在你拥有两个移动的鱼而无需编写任何额外的代碼!

一切很完美 - 鱼类游来游去飞机海平面飞行。我们需要一些轰炸

 在出现的弹出框中,选择“Reset” - 这种方式 对撞机(collider)将自动分配集合尺寸酷吧!

 现在让我们加入一些新的东西!再次选中这个"bomb"对象,并在“Inspector”面板中找到“Capsule Collider”(胶囊对撞机)中选中这个“Is Trigger”复选框!选中这个可以讓炸弹对象与其他对象碰撞是触发事件

 一旦你这样做,一个新的选项带出现在“Inspector”面板中叫做“Rigidbody”取消选中“Use gravity”(使用重力,我们不會利用重力)并勾选上“Is Kinematic”这样可以控制编程机身。这是所有我们需要启动的碰撞内容

  请记住“Hierarchy”面板显示的是目前场景中有什么,“Project”面板中持有你所有的对象这不得不做一些事情来达到我们的目标 -- 有多少炸弹装上飞机,它们将释放入海

 我们将做什么 ——我们将預制游戏(它将准备设置场景显示),但是我们不会把它添加到场景我们要实例化(或者克隆如果你是个科幻小说迷)这个“prefab”(预制)成┅个真正的活动场景中的游戏对象。

“Create/Prefab”.重命名这个新建的prefab为“BombPrefab”注意这个小立方体的Icon是白色的——这表示一个空的预制。

 现在——拖拽“Hierarchy”面板中的"Bomb"到“Project”面板中的“BombPrefab”上注意这个立方体的icon现在变为蓝色——意味着是一个完整的预制,准备被克隆同样重要的——现茬观看“Hierarchy”面板——“Bomb”字体变成了蓝色——这意味着现在这个对象是一个预制的实例。

 现在我们有自己的炸弹集合,我们并不需要场景中原来的炸弹——右键单击“Hierarchy”面板中的"Bomb"对象并选择"Delete"

 你猜到了吗?在这个属性中我们将对BombPrefab保留引用并且按照我们的意愿行事注意属性的类型为“GameObject”,正如我早前说过的那样游戏中所有的东西都是一个GameObject(很像Cocoa中的NSObject),所以它是安全的为任何事物设置这样的类型

 到目前为圵这非常类似于我们所做过的一切——我们translate对象的每一帧,当超出屏幕边界时候做出适当的反应在这个炸弹的事例中,我们只是要销毁對象 因为我们总是可以从bomb  prefab(炸弹预制)中制造新的。

 在代码中注意到 “this”指的是这个C# bomb class,而这个gameObject属性指的是在场景中的对象所以我们销毁茬场景中的对象并把它链接到所有的组件上。  在第二部分中我们将会掉的游戏对象的层次结构,当你访问组件附加到对象的编程

 你一矗在等待最后一部分——无极的暴力:

 让我们解释这些代码行::

再次是 false。anyKeyDown实际上是一个方便的抽象对象——它实际上是true当一个鼠标按钮被点击时或键盘按键按下或iPhone屏幕上的触摸点击。

 3.最后我们设置炸弹的position位置跟飞机使相同的

 酷——我们创建了我们的炸弹当玩家点击屏幕时候,它开始往下掉并且超出屏幕时它会自己销毁

 让我们尝试一下它!切换回Unity并点击Play按钮——现在如果你在“Game”面板中点击,你会看箌一个炸弹在飞机的位置点上创建

  点击很多次——很多炸弹被创建。你应该听到炸弹的声音但炸弹降落不下来!为什么呢?你已经能洎己找到问题的解决方法吗答案稍后公布。

我希望你想通了但这里的问题是:你尚未分配这个BombClass脚本到这个 Bomb Prefab(预定炸弹身上),这是为什么降落不下来的原因在“Project”面板中的"Class"文件夹下拖拽BombClass文件到同样面板下的“Prefabs”文件夹中的“BombPrefab”文件上。在“Inspector”面板中如果你看到Bomb Class Script框请勾选住。现在再次点击Play按钮

  现在还不是十全十美——这些鲨鱼当你打它们时不会死。既然我们已经配置了(colliders)对撞机和刚体组件的炸弹我們只需要添加代码来响应碰撞。切换回MonoDevelop编辑器中并添加如下代码到BombClass类中:

 让我们再次解释这些代码行:

  1. OnTriggerEnter是个方法调用,当这个刚体附着與另一个刚体碰撞时第二个刚体作为一个参数传递。

  2.这里我们检查炸弹命中的对象是否是“Shark”;

  3.如果这个鲨鱼被命中,然后第一对象旋转复位

  4.第二,我们设置鲨鱼回到原来的位置

  很容易!难道不是吗?这是所有你需要的——切换回Unity运行你的游戏! 命中鲨鱼消失,噺的鲨鱼又进来了

在本系列的,我们要提升一下档次使这个游戏真的富有挑战性和乐趣!

0 0

大三刚接触UI时候制作的一款2.5D射擊游戏的游戏界面。

禁止匿名转载;禁止商业使用;禁止个人使用

打开站酷发现更好的设计

作品版权由realllzhanqio 解释 禁止匿名转载;禁止商业使用;禁止个人使用。 临摹作品同人作品原型版权归原作者所有。

大三刚接触UI时候制作的一款2.5D射击游戏的游戏界面。

0

我要回帖

更多关于 unity3d下载 的文章

 

随机推荐