美文网首页senunity学习多媒体和建模
Unity官方实例教程 Roll-a-Ball(一)

Unity官方实例教程 Roll-a-Ball(一)

作者: Zui | 来源:发表于2015-10-26 16:26 被阅读26914次
    Roll-a-Ball 游戏

    Unity官方实例教程 Roll-a-Ball(二)

    前言

    Unity官方实例教程 Roll-a-Ball 汉化视频地址,点击这里

    官方视频所用的unity版本是4.3的,而现在unity最新的版本是5.2,有很多东西都不一样了,所以视频里面的一些做法需要根据最新的版本进行一些修改,在下面的具体实例中会有5.2版本的做法说明

    你将学到什么?

    • 如何创建一个新的项目(Project)
    • 如何创建一个新的游戏场景(Scene)
    • 如何添加基本的游戏对象(GameObject)
    • 如何添加灯光(Light)
    • 如何给游戏对象添加脚本(Script)
    • 实现一个简单的计分板UI(UI Text)
    • 如何发布游戏(Build)

    一、创建一个新的项目(New Project)

    第1步:通过File->New Project菜单打开创建新项目对话框

    NewProject

    第2步:确定项目名称、存放路径以及游戏模式

    新项目对话框
    • Project name:项目名称
    • Location:项目存放路径
      点击Create project按钮创建新项目。

    第3步:观察下创建后的编辑器界面

    编辑器主界面
    有可能你创建出来的项目视图布局不是上图所示,你可以通过编辑器右上角的layout按钮来选择视图布局,上图的布局是选择的2 by 3模式,还有其他模式,可以自己选择来体验一下 Layout

    二、创建第一个游戏场景(Scene)

    第1步:创建一个文件夹来存放游戏场景文件

    unity中,所有的游戏资源文件都放在Assets文件夹下面,为了便于管理游戏资源文件,我们一定要对游戏资源进行合理的分类,这一点很重要,尤其是后期游戏资源文件多起来的时候,合理的分类能帮你更好的管理资源,所以我们首先创建一个名为_Scenes的文件夹,来存放游戏场景文件。
    创建方法有2种:

    • 通过Create按钮创建,我们在Project窗口中,选中Asset文件夹,然后点击Create弹出下拉菜单,在菜单中选中Folder,如下图:

      Create按钮
    • 通过右键弹出创建菜单,个人觉得这种方式会更加便捷一些


      右键弹出创建菜单

    第2步:保存当前游戏场景

    • 我们通过File->Save Scene来保存当前游戏场景,你也可以通过快捷键【Cmd + S】来保存。(PS:windows用户快捷键为【Ctrl + S】)


      Save Scene
    • 然后给Scene命名和制定存放路径,记住,这里一定要将场景文件保存在_Scene文件夹下面,我们要从一开始养成良好的习惯


      命名和选择存放路径

    三、添加游戏对象——平台(Plane)

    保存了游戏场景后,我们就可以开始在场景中添加一些我们所需要的游戏对象了,我们第一个需要添加的就是游戏进行的平台,这里我们使用的是unity自带的Plane对象,添加一个游戏对象(GameObject)有3种方法

    • 第1种:通过菜单GameObject->3D Object->Plane来创建,如下图:


      通过菜单创建GameObject
    • 第2种:通过Hierarchy窗口中Create按钮来创建,如下图:

      通过Create按钮创建GameObject
    • 第3种:通过右键菜单创建,我们在Hierarchy窗口中单击右键会弹出菜单,如下图:

      通过右键菜单创建GameObject

    平台对象创建成功后,我们最好给他起一个好的名字,来解释它的作用,我们可以给所有个游戏对象重新命名,命名的方法有2种:

    • Hierarchy窗口中缓慢的双击对象名称
    • Hierarchy窗口中选中你要修改名称的GameObject后,然后按回车键
      在这里我们将平台的名称修改为Ground

    名字修改完成后,我们还需要做一个很重要的事情(官方强力推荐),我们把平台的Transform属性给重置(reset)一下,我们在Inspector窗口中找到Transform组件,然后点击它右上角的小齿轮,选择reset选项,如下图:

    重置平台属性

    这个重置操作,官方是建议每次我们添加新的GameObject后最好都做一次,好的习惯我们尽早培养

    平台添加成功后,我们可以对其的属性进行一些调整,例如我们调整一下平台的大小,将目光锁定到Scene窗口,我们可以在其中可直观的来修改平台的属性,这里有3个很实用的快捷键可以使用:

    • W:切换到移动模式,该模式下我们可以任意拖动平台,改变它的位置
    • E:切换到旋转模式,该模式我们可以任意旋转平台,改变它的角度
    • R:切换到缩放模式,该模式下我们可以任意缩放平台,改变它的大小
      当然我们也可以直接在Transform里面直接输入想要的数值,在本例中,我们把平台的Scale X和Z的数值设置为2

    Tips:先选中一个GameObject,然后点击F快捷键,可以在Scene窗口将摄像机对准你选中的GameObject,方便你快速定位

    四、添加我们的主角——球体(Sphere)

    有了平台后,制作Roll-a-Ball游戏我还需要一个球体,我们可以通过方向键来控制球体移动,添加球体的方式,和上面添加平台的方式一样,只不过我们选择的是Sphere对象,如下图:

    添加球体
    球体对象创建成功后,我们最先要做什么呢?没错,就是官方推荐的做法,我们把球体的Transform属性重置,然后给他起一个好的名字,这里我们将其命名为Player,因为在这个游戏里面,这个球就代表这我们玩家。

    重置Transform命名这两个动作,我们尽量养成好习惯,在创建新的GameObject后,做这两个标准化动作

    然后我们选中球体,通过F快捷键,定位到球体,我们会发现此时球有一个半是陷入在平台中的,不要紧,我们通过调节他的Position的Y值为0.5,让它正好处于平台上


    陷入平台的球体 处于平台上的球体

    五、添加灯光(Light)

    这里首先要提一下,因为官方视频中所用的unity版本是4.3,而现在最新的版本是5.2,所以下面的内容会与视频有所不同,我们会以最新的版本为基础来说明
    新版中,每个新建的项目,都会自动带有一个平行光(Directional Light),而视频中的版本,灯光是需要我们自己添加的,所以这里我们就不用再添加灯光了,直接修改平行光的属性就可以了
    前面在讲场景文件保存的时候,就提到的好的资源分类可以帮助我们更好的管理游戏资源,这里我们对于GameObject的管理也是一样的,而在GameObject中,我们没有文件夹,所以我们使用一个空的GameObject(Empty)来代替文件夹的作用

    • 我们首先创建一个空的游戏对象,Create Empty
    • 然后将其的Transform重置
    • 然后将其名称修改为Lighting
    • 最后我们把Directional Light拖入到Lighting
    • 这样我们就相当于把Lighting当成一个文件夹,把所有的灯光对象放到这个里面,便于管理
      Lighting

    之后,我们为了让球和阴影有个明显的区分,我们在增加一个新的光源,用来照射在球体上,我们创建一个新的平行光(Directional Light),这样我们就有了两个名叫Directional Light的灯光,这样不便于区分,于是我们修改一下灯光的名字

    • 先将我们刚刚新建的灯光改名为Fill Light
    • 然后把之前那个灯光改名为Main Light
    • 然后把Fill Light也拖入到Lighting下面
      修改名字之后的灯光

    然后我们选中Fill Light,首先我们将其的灯光颜色设置为红色,这样便于和Main Light区分开来,然后将它的Rotation属性分别调整为-33,-135,180

    Fill Light设置

    这样修改后,我们就可以看到球体上一层红色的光泽。


    红色光泽

    六、让球体动起来——添加脚本(Script)和刚体(Rigidbody)

    有了平台,有了球体,有了灯光,下一步我们就应该让球体可以动起来了。unity上手很简单的一个原因,就是他的做法非常符合我们平时生活的逻辑,比如我们这里想让球体动起来,那么按照我们正常的想法,我们要做的事情就是告诉球体,让他动起来,那么装换成unity的实现方法,就是给球体添加一个脚本组件,然后在脚本组件里面告诉他怎么动,下面我们来看看具体的操作

    第1步:给球添加刚体

    刚体可以给球体添加物理效果,让他可以检测物理碰撞,便于我们后面实现拾取物体和碰撞墙面
    给球体添加刚体有2种方法:

    • 第1种:通过Component->Physics->Rigidbody添加,如下图


      Rigidbody添加
    • 第2种:通过Add Component按钮添加,如下图

      Add Component按钮添加

    第2步:给球体添加脚本

    首先我们要再提一下开始说到的资源管理思想,为了便于我们管理游戏的资源,所以我们会创建一个文件夹,来专门存放所有的脚本文件,如下图:


    Scripts文件夹

    要想给球体或者说任何一个GameObject添加一个脚本,我们首先选中GameObject,这里我们选中球体也就是我们的Player,然后在Inspector窗口中点击Add Component按钮,在弹出的菜单中选着New Script

    New Script
    之后会进入脚本名称和语言类型选择,这里我们将脚本命名为PlayerController,然后语言选择C#(C Sharp)
    屏幕快照 2015-10-26 下午3.32.14.png

    点击Create and Add后,我们就成功给球体添加一个脚本组件,然后我们点击脚本组件右上角的小齿轮按钮,在弹出来的菜单中选择Edit Script便可打开脚本编辑器了

    打开脚本编辑器

    七、编写脚本

    下面没有编程经验的同学,可以直接按照例子来抄写代码,后面再来慢慢理解
    新打开的脚本会是如下的样子:


    2277F32A-E488-46CD-94C9-7241F5E1626C.png

    我们可以看到,里面有两个方法,Start和Update,在本例中,这两个方法我们展示不用到,我们添加一个FixedUpdate的方法,该方法只在计算有关物理效果是调用,然后代码如下:


    代码
    这里有两点需要特别说明一下:
    • 第1点:上图代码中最后一句,和视频中的不一样,由于unity版本问题,视频中的代码在新版中是无法使用了,所以必须用修改过的代码
    • 第2点:上图中用红线标出的语句,我们通过定义public的变量后,该变量可以在编辑器中显示并进行修改,如下图:


      353CDE74-A7FA-411D-B83E-C11853652A8A.png

      在本例中,我们可以将Speed数值设置为500,这是一个比较合理的数值,做完这些之后,我们就可以运行游戏看看效果了!

    相关文章

      网友评论

      • 7a66bb8ec047:为什么没人告诉我需要按w、a、s、d球才能动:joy: , 到边界,球掉深渊了:joy:
      • 善变的人i:怎么让它停止呢
      • 387f8f7622e6:为何我按照教程做了,但是不动?😂😂😂
      • e25959ff6e39:好教程。
      • e4a74c726759:非常感谢,详尽清晰,CameraController中offset应该是offSet = transform.position-player.transform.position;
        否则offSet偏移量对应的就是相机与坐标原点了
        995ea70a9a88:照作者这么写的话应该只要摄像机一开始的坐标别太偏就没事,offset自己就表示了摄像机与球之间应该保持的一个坐标差,一开始offSet偏移量对应的坐标原点其实可以想成摄像机在未来跟随的点,也就是player的坐标点
        995ea70a9a88:你这样写如果球的transform值初始设置的变量太大的话,你点开始以后摄像机就飞得没影了,你把球的Position的Y值改成10以后试试吧
      • 47241299394d:我做了两遍。。。悲剧的是,按“”“W,A,S,D” 方向不一样,第一次是反向(按A往右 按W向下那种),又做了一遍,是正向。不知道为什么……
        8495689210f7:是不是摄像头的位置不对
        bfc6c882237c:我做出来的也出现这种情况不知道什么原因
      • 雨墨丫头:你好,为什么我照着你的做的球没动呢:blush:
        5176596cbb97:@楠枫月Krinato 没事了,每次一问问题,我就自己找到问题了,,多写了一个private给fixedupdate。。。。
        5176596cbb97:@鬼打架_8d7c 你好,我添加了也没有用啊,还是不动,对了好几遍代码了
        04d5845ca461:对Player添加Rigidbody,一开始我忘记加了也没动,别的论坛看到了方法然后回来告诉你的:smile:
      • 杨世玲:请教一下,添加了GameObject之后,reset Transform的意义是什么?

        另外,官方在哪里推荐的?谢谢。
        5f0cbb592a7b:@杨世玲 inspector => transform 设置图标=>reset
        大概意思就是重置坐标轴,度数,大小
        45c442f27896:官网教程 https://unity3d.com/cn/learn/tutorials/s/roll-ball-tutorial
      • bwzhny:同样正在
      • a450c06c9fed: 感谢作者~!!!讲解的很细腻!
      • 74386c2df909:造福人类的教程。
      • MOKA9:谢谢作者!
      • 康小夫:请问有联系方式吗?我有一些问题想请教
      • e59a32e63731:文章很好,适合初学者,一步步坐下来,基本理解了UNITY的游戏构建流程。
      • 还好我不懂:你好前辈,能请教你一些问题不,给个联系方式

      本文标题:Unity官方实例教程 Roll-a-Ball(一)

      本文链接:https://www.haomeiwen.com/subject/cylxhttx.html