第3章 Unity3D引擎的脚本编程-3.4操作实例:RollaBall游戏项目_第1页
第3章 Unity3D引擎的脚本编程-3.4操作实例:RollaBall游戏项目_第2页
第3章 Unity3D引擎的脚本编程-3.4操作实例:RollaBall游戏项目_第3页
第3章 Unity3D引擎的脚本编程-3.4操作实例:RollaBall游戏项目_第4页
第3章 Unity3D引擎的脚本编程-3.4操作实例:RollaBall游戏项目_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.Unity3D引擎

.3.4操作实例:RollaBall游戏项目

.目录.6.显示记分板

.2.

小球动起来

.3.

摄像机跟随小球移动

.4.

会旋转的方块

.5.小球拾取方块

.1

.

搭建游戏场景

.7.

显示游戏胜利文本

.8.发布游戏

1.

搭建游戏场景

搭建小球运动的基本环境:小球、小球滚动的平台和4面墙围起来的墙面。

操作步骤如下:

1.创建一个新的项目RollaBall单击菜单“File”→“NewProject”,输入项目名称RollaBall,设置项目存放路径。

2.创建游戏场景在Project面板的Assets文件夹中单击鼠标右键,在弹出的快捷菜单中选择“Create”→“Folder”,创建一个Scenes文件

夹来管理项目中游戏的场景文件;单击菜单“File”→“SaveScene”来保存当前游戏场景文件,将场景文件保存在Scenes文件

夹中,取名为MiniGame。

3.设置灯光单击菜单“Window”→“Rendering”→“LightingSettings”,打开Lighting设置对话框,勾选“Autogenerate”复选框。

4.添加游戏对象——小球滚动的平台

Hierarchy面板中单击鼠标右键,在弹出的快捷菜单中选择“3DObject”→“Plane”,将其名字修改为Ground;点

击Inspector面板中Transform旁边的按钮,将Transform组件的属性重置(Reset)。

重置后,游戏对象放置在场景的(0,0,0)坐标处,此坐标是世界坐标系的原点。调整Ground对象的大小,将Transform组件中的Scale属性的X值设置为2、Z值设置为2。

Project面板中,创建一个Materials文件夹来管理项目中的材质球;在Materials文件夹中单击鼠标右键,选

择“Create”→“Material”,创建一个新的材质球,将其改名为Background,将材质球设置成深蓝色。拖曳Background材质球到Scene面板的Ground对象上,将游戏平台设置成深蓝色。1.

搭建游戏场景

搭建小球运动的基本环境:小球、小球滚动的平台和4面墙围起来的墙面。

操作步骤如下:

5.添加游戏主角——小球

Hierarchy面板中单击鼠标右键,在弹出的快捷菜单中选择“3DObject”→“Sphere”,将其名字修改为Player;

将Inspector面板中Transform组件的属性重置;

使小球沿Y轴方向向上移动0.5个单位,使其位于Ground平台之上。。

6.改变方向光的角度调整灯光的照射角度:在Hierarchy面板中选中“DirectionalLight”,将对应Inspector面板中Transform组件的Rotation的Y值改成60。

7.添加四周的墙面

创建一个空物体Walls作为父对象,用于存放游戏场景中的4面墙;将Walls对应Inspector面板中Transform组件的属性重置,回到坐标原点。创建一个Cube游戏对象,重命名为Wall1,将其拖曳到Walls中作为其子对象,调整Wall1的大小,使其与游戏平台Ground的宽度一样;将Wall1移动至平台的边缘。使用同样的方法可创建余下的3面墙。2.

小球动起来

小球在游戏平台中滚动,能撞击墙面但不会飞出去。

通过给小球添加刚体组件、脚本来控制小球的移动。

操作步骤如下:

1.给小球添加刚体组件

Inspector面板中单击“AddComponent”按钮,选择“Physics”→“Rigidbody”。

2.给小球添加脚本创建一个新的脚本,将其重命名为PlayerController;双击PlayerController脚本打开脚本编辑器。此脚本要实现的功能是获取键盘上的方向键的信息,给小球添加作用力,控制小球在游戏平台中滚动。

完整的PlayerController.cs脚本如图所示。将PlayerController.cs拖曳到游戏对象Player中,在Inspector面板的PlayerController脚本组件中的“Speed”文本框中输入小球运动的速度值为200。单击“运行”按钮,按下键盘上的方向键,可控制小球在游戏平台中滚动。

3.

摄像机跟随小球移动

操作思路是摄像机的位置跟随小球的位置变化,而摄像机的角度不发生改变。

首先用变量记录下摄像机与小球之间的位置偏移量,游戏运行过程中小球与摄像机之间始终保持相同的偏移量。

通过脚本实现摄像机跟随小球移动,操作步骤如下:

1.调整摄像机的角度设置MainCamera的Transform组件中Position属性,即X值为0、Y值为8、Z值为-12;

设置Rotation属性,即X值为45、Y值为0、Z值为0。

2.给摄像机添加脚本新建脚本CameraController.cs。脚本中首先定义一个公共的GameObject变量,用来“告诉”游戏,摄像机将跟随哪个游戏对象移动。

定义一个Vector3类型的变量offset,存放摄像机与游戏对象的偏移量。完整的摄像机跟随脚本如图所示。将CameraController.cs拖曳到游戏对象MainCamera上,将Player游戏对象拖曳到“Player”中,CameraController脚本组件如图所示。运行游戏,可以看到摄像机跟随着小球移动,游戏视角也随之改变。4.

会旋转的方块

为了给游戏增加一些趣味性,可让方块在原地自动旋转。

操作步骤如下:

1.创建一个方块新建一个Cube,命名为PickUp,并单击其Transform组件的“Reset”重置到原点;

PickUp与Player重叠,为了更好地处理PickUp方块,可将Player暂时隐藏、不在场景中显示。

选中Player游戏对象,在Inspector面板中取消勾选其名称前的复选框,则可在场景中禁用Player游戏对象。调整PickUp游戏对象的Transform组件属性值:Position的Y值设为1,Rotation的X、Y、Z值都设为45。

2.添加脚本,让方块自动旋转新建脚本Rotator.cs,使用transform.Rotate()函数让方块按照固定的角度旋转。在脚本的Update()函数中添加以下代码:

将脚本Rotator.cs拖曳到PickUp游戏对象中,单击“运行”按钮就可以让方块自动旋转。

3.将PickUp游戏对象制作成预设体将Hierarchy面板中的PickUp游戏对象直接拖曳到Prefabs文件夹中,生成PickUp.prefab预设体。

4.

会旋转的方块

为了给游戏增加一些趣味性,可让方块在原地自动旋转。

操作步骤如下:

4.在游戏场景中添加10个方块创建一个空物体作为父对象,重命名为PickUps,用于存放游戏场景中的10个方块。;将Prefabs文件夹中的PickUp.prefab预设体拖曳到Hierarchy面板中的PickUps空物体下,生成一个新的小方块。。使用快捷键Ctrl+D复制此方块,可生成其他9个方块;调整10个方块位置。

5.改变方块的颜色:将方块颜色设置成黄色创建一个新的材质球,将其重命名为PickUp;选中PickUp,将PickUp材质球设置成黄色。拖曳PickUp材质球到Scene面板的一个方块对象中,此方块对象的颜色变成黄色;在此方块的Inspector面板中单击“ApplyAll”按钮,更改PickUp对象的预设体属性,将颜色更改应用到PickUp预设体上,这样所有方块的颜色均会修改成黄色。

效果图如图所示。5.

小球拾取方块

小球接触到方块时,能够拾取这些方块。

要实现这样的效果需要检测小球Player游戏对象与可拾取的方块PickUp对象之间的碰撞,碰撞能触发某种操作,如被碰撞的PickUp对象消失。

操作步骤如下:

1.给10个方块添加标签选中PickUp.prefab预设体,在对应的Inspector面板中单击“OpenPrefab”按钮,对预设体进行编辑。如图所示,在“Tag”下拉列表中选择“AddTag”,添加一个新的标签PickUp;将PickUp.prefab的“Tag”设置成“PickUp”。

2.将10个方块设为触发器选中PickUp.prefab预设体,在对应的Inspector面板中的BoxCollider组件中勾选“IsTrigger”复选框,将会旋转的方块设置成触发器。

5.

小球拾取方块

小球接触到方块时,能够拾取这些方块。

要实现这样的效果需要检测小球Player游戏对象与可拾取的方块PickUp对象之间的碰撞,碰撞能触发某种操作,如被碰撞的PickUp对象消失。

操作步骤如下:

3.将小球重新显示在场景中选中Player游戏对象,在Inspector面板中勾选其名称前的复选框,则可在场景中显示Player游戏对象。

4.修改小球的PlayerController.cs脚本在PlayerController.cs中添加OnTriggerEnter()函数,当小球触碰方块时,可将方块对象禁用,使其不显示在场景中。完整的PlayerController.cs脚本如图3-78所示。5.运行单击“运行”按钮,按下键盘上的方向键,控制小球拾取旋转方块。6.

显示记分板

在场景中增加一个记分板,记录玩家拾取方块的分数。。场景中添加一个UI元素Text,用来显示玩家的分数。同时,在脚本PlayerController.cs中需要用一个变量来记录玩家的分数,并需将变量的值传到Text对象中。

操作步骤如下:

1.在场景中增加Text对象

Hierarchy面板中单击鼠标右键,选择“UI”→“Text”,将其重命名为CountText,添加Text对象。

2.将Text对象显示在游戏场景的左上角按下Shift+Alt快捷键,同时单击图中的“左上”按钮,将文本移动到屏幕的左上角位置。

将CountText对象的PosX的值修改成10,PosY的值修改成-10,并将文本的颜色改成白色。

6.

显示记分板

在场景中增加一个记分板,记录玩家拾取方块的分数。场景中添加一个UI元素Text,用来显示玩家的分数。同时,在脚本PlayerController.cs中需要用一个变量来记录玩家的分数,并需将变量的值传到Text对象中。

操作步骤如下:

3.在脚本PlayerController.cs中添加记分功能代码(1)在脚本最前面引入命名空间UnityEngine.UI,以便使用Text类型的变量。

(2)在脚本中定义一个Text类型的公共变量countText,用来保存UI文本对象;定义一个int类型的变量count,用来记录小球拾取方块的个数,起始值为0。

(3)Start()函数中,对两个新增变量初始化。

(4)修改OnTriggerEnter()函数,当小球拾取一个方块后,count值加1,同时修改记分板。(1)(2)(3)(4)6.

显示记分板

在场景中增加一个记分板,记录玩家拾取方块的分数。

操作步骤如下:

4.设置属性将CountText对象拖入Player里面的“CountText”中,设置CountText属性,如图所示。5.运行单击“运行”按钮,控制小球拾取旋转方块,可在Game面板中看到玩家获得的分数,

7.

显示游戏胜利文本

小球拾取完所有方块后,在面板中应实现显示文本“YouWin!”。

操作步骤如下:

1.在场景中增加Text对象

Hierarchy面板中,单击鼠标右键,选择“UI”→“Text”,重命名为WinText。调整WinText对象的属性如图所示,在Inspector面板中修改WinText的属性,PosY值为70,FontSize值为26,居中对齐,Color设置为红色。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论