购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.2 创建场景

玩《王者荣耀》时,不难发现一款游戏会包含不同的场景。点击游戏图标听到TiMi的同时,游戏的画面会从加载场景切换到登录场景,如图1-15和图1-16所示。

图1-15 加载场景

图1-16 登录场景

通常情况下,游戏会为玩家依次打开一组场景,比如登录场景→主场景→匹配页面→战斗场景。直到进入战斗场景,玩家才算真正进入了游戏。

实际上,大多数游戏都是由不同场景组成的,每个场景负责不同的功能模块。客观来看,近80%的游戏都包含3个场景,它们依次是登录场景、主场景和战斗场景。如果你是一个玩家,则大可不必在意这些场景,但要成为一名开发者,则必须了解一款游戏的基本构成——场景。

由于《猫捉老鼠》是一个教学案例,所以只需要创建一个场景就够用了。图1-17所示是一个场景的创建步骤,按图操作,并把场景命名为Game。

图1-17 创建场景

通常情况下,游戏中的一个场景代表了一个独立的功能。以登录场景为例,一个登录场景中往往有账号/密码输入框、登录按钮和服务器选择等组件,这些组件被组织在一起,实现了完整的登录功能。

默认情况下,新创建的场景会包含两个物体,分别是Main Camera和Directional Light,这两个物体是Unity为场景自动创建的主摄像机和方向光。

主摄像机是玩家的眼睛,玩家通过它才能看到游戏世界。方向光是游戏世界中的太阳光,它照亮了整个游戏世界。可是游戏世界是一个多姿多彩的世界,它里面有角色、有敌人,也有玩法,不能只有摄像机和方向光。所以游戏场景还要有许多其他物体,如模型、图片、脚本等。

接下来,我们就来创建它们。

1.2.1 创建物体

在一款游戏中,通常把物体分为两大类——场景和角色。在《猫捉老鼠》游戏中,需要一个游戏场景和两个游戏角色。游戏场景是一个3D虚拟环境,游戏角色分别指猫和老鼠,它们可以在游戏场景里自由地活动。猫是游戏世界里的主角,是玩家控制的对象;老鼠是游戏世界里的普通角色,是程序控制的对象。

下面来创建游戏的场景和角色吧。

1.游戏场景:地面

新建一个地面,让游戏角色先有一个地盘,游戏角色猫和老鼠将在新建的地盘上疯狂地追逐。地面的创建过程如图1-18所示,并将其重命名为Floor。

图1-18 创建地面

2.游戏主角:猫

与地面的创建过程一样,下面来创建游戏主角——一只可爱的猫。为了方便,现阶段先创建一个球体,临时性地代替猫。球体的创建过程如图1-19所示。

(1)在结构面板的空白处单击鼠标右键,在弹出的快捷菜单中选择3D Object>Sphere,这样就完成了一个球体的创建。

(2)在结构面板和场景面板中,可以看到刚刚创建的球体Sphere。

(3)根据实际情况,需要把球体放在地面的中心处。所以,先选中球体Sphere,在它的监视器面板中,找到其位置组件Transform,对该组件的参数进行更改。

(4)尽管它是一个球体,但还是把它命名为Mao。

(5)单击场景面板,按快捷键Ctrl+S保存场景。至此,游戏主角就创建完成了。

图1-19 创建代替猫的球体

图1-19 创建代替猫的球体(续)

3.普通角色:老鼠

创建一个立方体来代替老鼠,老鼠的创建过程跟猫的大同小异。

如图1-20所示,在结构面板的空白处单击鼠标右键,在弹出的快捷菜单中选择3D Object>Cube,于是一个立方体就创建完成了,把它重命名为Mouse,并将它的初始位置Position设置为(0,0.5,-4)。

图1-20 创建代替老鼠的立方体

到这里,一个简单的游戏世界的场景和角色就创建完成了。

接下来,如何实现猫捉老鼠的玩法呢?

这就需要引入脚本了。脚本可以控制猫自由移动,当猫捉到老鼠时,脚本又能控制老鼠灵活地逃跑。

Unity脚本的编写需要了解C#基础知识,实现优秀玩法的脚本需要一定量的学习和实践。本书关于脚本的讲授主要集中在第2篇。第1篇涉及的脚本,笔者将抽取其中的关键部分进行说明,以确保读者能看懂代码含义。本篇涉及的C#基础知识就留作练习,相信大家通过自主学习一定能看明白!

1.2.2 关联脚本

为了理解一个脚本的用途,下面通过几个小问题来梳理一下思路。

①脚本要实现什么功能?

②脚本实现这个功能需要关联哪些物体?

③这些物体需要符合什么条件才能被脚本关联?

接下来带着问题,从实现功能的角度出发,把脚本应用到游戏中。

脚本要实现的功能是,玩家可以用键盘上的W、A、S、D键控制猫在地面上自由地行走。通常情况下,猫在地面上行走,所以这个脚本需要关联猫和地面。猫和地面符合什么条件才能被关联呢?

第一,脚本控制的是猫的移动,所以脚本需要加到猫身上。第二,由于控制物体移动的逻辑实际上是控制物体的刚体组件移动,所以猫身上需要加一个刚体组件。第三,有了刚体组件,猫就有了重力效果,若地面上没有碰撞体组件,猫就会掉下地面,所以地面上也需要加碰撞体组件。

对猫和地面的设置,如图1-21和图1-22所示。

图1-21 地面设置

图1-22 猫的设置

加了脚本之后,猫可以自由地行走了,但是这只猫还不能捕捉老鼠,为什么呢?

因为猫还不认识老鼠,自然不知道自己应该捉谁,那么如何让猫认识老鼠呢?

这里可以为脚本中的捕捉逻辑指定一个捕捉目标,让猫时刻知道自己要捕捉的是什么。在具体代码中,为这个捕捉目标定义一个公共变量Target,只需要把老鼠赋值给这个Target,猫就知道该捉谁了,如图1-23所示。

好了,再来说说老鼠。

老鼠被捉到之后能逃跑,说明老鼠被捉后,其位置会变化,所以给老鼠加的代码简单一些,只是实现位置变化的逻辑。另外,老鼠和猫一样也要在地面上行走,所以也需要为它添加碰撞体组件,图1-24所示是为老鼠添加碰撞体组件的操作过程。

图1-23 为猫关联捕捉目标

图1-24 为老鼠添加碰撞体组件

至此,猫捉老鼠的游戏就可以玩了。保存场景,单击“运行”按钮,如图1-25所示。

图1-25 猫捉老鼠

假如W、A、S、D键无响应,这是因为没有激活游戏面板Game,单击游戏面板即可激活。

至此,玩家终于可以自由地控制猫去捉老鼠了,老鼠被捉到后会自动地随机换一个位置。如果你运行的结果也是如此,那么说明你的实践成功了! 49vgIW6tZfZoIi0bVaxm5nTOI3gzk2JPfdlica4KP301qQIefHMQ19oxMoUFyC5V

点击中间区域
呼出菜单
上一章
目录
下一章
×