文章目录

  • 前言
  • 一、实验目的
  • 二、实验环境
  • 三、实验内容
    • 1.创建舞台
    • 2.纹理化
    • 3.超级弹性材质
    • 4.完成舞台
    • 5.玩家
      • 上移摄像机
      • 减震器
    • 6.混乱球
    • 7.彩球
    • 8.球门
    • 9.游戏控制器
    • 10.游戏测试
  • 总结

前言

  现在应该再次利用你所学的知识制作另一款游戏。在本章中,你将制作 Chaos Ball 游戏,它是一款快节奏的街机风格的游戏。本实验首先将介绍游戏的基本设计元素。接着,将构建舞台和游戏对象。每个对象都将被创建为独特的对象,并为其提供特殊的碰撞属性。然后,将添加交互性,使玩家能够玩游戏。最后将尝试玩游戏并执行任何必要的调整,以改进游戏体验。


一、实验目的

  1. 怎样设计 ChaosBall 游戏;
  2. 怎样构建 ChaosBall 舞台;
  3. 怎样构建 ChaosBall 实体;
  4. 怎样构建 ChaosBall 控制对象;
  5. 怎样进一步改进 ChaosBall。

二、实验环境

  1. 操作系统:WINDOWS 10
  2. 开发工具:UNITY
  3. 实验设备:PC

三、实验内容

  制作 Chaos Ball 游戏,它是一款快节奏的街机风格的游戏。准备游戏的基本设计元素,构建舞台和游戏对象。每个对象都将被创建为独特的对象,并为其提供特殊的碰撞属性。然后,将添加交互性,使玩家能够玩游戏。最后将尝试玩游戏并执行任何必要的调整,以改进游戏体验。可根据需要增加其他内容。

1.创建舞台


(1)导入Environment ,Characters程序包(单击Assets > Import Package 命令),然后向项目中添加一种地形。
(2)把地形的分辨率设置为 50×50(它是在 Terrain Settings 的 Resolution 区域中设
置的)。向场景中添加一个定向灯光,并删除 Main Camera。

(3)向场景中添加一个立方体,把该立方体置于(0, 1.5, 25)处,并把它缩放为(1.5, 3, 51)。然后把立方体重命名为 Wall。

(4)在 Scenes 文件夹中把场景重命名为 Main。

2.纹理化

(1)在 Project 视图中的 Assets 下面创建一个名为 Materials 的新文件夹。向该文件夹中添
加一种材质(右键单击文件夹,并选择 Create > Material 命令),并把该材质命名为WallMaterial。
(2)把 x 轴贴图设置为 10。
(3)在 Inspector 视图中对墙壁材质应用 Cliff (Layered Rock)纹理。
(4)在 Scene 视图中单击墙壁材质,并把它拖到墙壁对象上。

(1)选取地形,然后在 Inspector 视图中选择地形纹理化工具。
(2)单击 Edit Textures > Add Texture 命令,在 Add Terrain Texture 对话框中,选择 Grass (Hill)
纹理,并单击 Add 按钮。
(3)现在将用青草纹理化地形。

3.超级弹性材质

(1)右键单击 Materials 文件夹,并选择 Create > Physic Material 命令。把材质命名为
SuperBouncyMaterial。
(2)设置超级弹性材质的属性。
(3)单击超级弹性材质,并把它拖到场景中的墙壁对象上。它将自动作为物理材质应用于碰撞器。你应该会看到该材质列出在 Box Collider 组件的 Material 属性中。

4.完成舞台

(1)把墙壁复制一次,并把新实例放在(50, 1.5, 25)处。
(2)把墙壁再复制一次,把它放置在(25, 1.5, 0)处,并把旋转角度设置为(0, 90, 0)。
(3)复制上一步中创建的墙壁(旋转过的墙壁),并把它放置在(25, 1.5, 50)处。

5.玩家

上移摄像机

(1)在 Hierarchy 视图中展开 First Person 控制器(单击其名称旁边的箭头),并且定位
Main Camera。
(2)在选择了控制器的摄像机之后,把它定位于(0, 5, −3.5)处,并把旋转角度设置为(35, 0, 0)。

减震器

(1)向场景中添加一个立方体,并把立方体重命名为 Bumper,然后把它缩放为(3.5, 3, 1)。
(2)单击超级弹性材质,并把它拖到减震器上。
(3)在 Hierarchy 视图,单击减震器并把它拖到 First Person 控制器上。这将把减震器嵌套在控制器上。然后,把减震器的位置改为(0, 0, .1),并把旋转角度设置为(0, 0, 0)。

(4)选择 First Person 控制器,并在 Inspector 视图中展开 Character Motor (Script)组件的 Movement 属性,然后把最大前进速度改为 11, 并把最大横向速度改为 10。

6.混乱球

(1)向场景中添加一个球体。把球体重命名为 Chaos,然后把它定位于(15, 2, 25)处,并将其缩放为(.5, .5, .5)。
(2)单击并把超级弹性材质拖到球体上。
(3)为混乱球创建一种新材质(非物理材质),并把它命名为 ChaosBallMaterial。在材质的颜色选择器中,选择一种亮黄色。单击并把材质拖到球体上。

(4)给球体添加一个刚体。把角阻力改为 0,并取消选中 Use Gravity。把 Collision Detection属性改为 Continuous。在 Constraints 属性下,冻结 y 位置。
(5)打开 Tag Manager(单击 Edit > Project Settings > Tags 命令),通过单击 Tags 旁边的箭头展开 Tags 区域,并在 Element 0 处添加标签 Chaos。然后继续前进,并添加标签 Green、Orange、Red 和 Blue,以后将用到它们。
(6)选取混乱球,然后在 Inspector 视图中把它的标签改为 Chaos。
(7)创建一个名为 VelocityScript 的脚本,并把它附加到混乱球上。

VelocityScript代码如下:

VelocityScript.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class VelocityScript : MonoBehaviour
{public float max = 50;// Use this for initializationvoid Start(){GetComponent<Rigidbody>().velocity = new Vector3(Random.Range(0, max), 0, Random.Range(0, max));}// Update is called once per framevoid Update(){}
}

(8)把混乱球复制 4 次。把每只球散布在舞台周围(确保只改变 x 和 z 位置),并给它们都提供一个随机的 y 轴旋转角度。

7.彩球

(1)向场景中添加一个球体,并把它重命名为 Blue。把该球体定位在靠近舞台中间的某个位置,并且确保它的 y 轴位置是 2。
(2)创建一种名为 BlueMaterial 的新材质,并把它的颜色设置为蓝色。然后,继续创建 RedMaterial、GreenMaterial 和 OrangeMaterial 这些材质。单击并把BlueMaterial 材质拖到球体上。

(3)单击并把超级弹性材质拖到球上。
(4)给球体添加一个刚体。然后在 Constraints 下把它的角阻力改为 0,取消选中 UseGravity,
并冻结 y 位置。
(5)把球体的标签改为 Blue。
(6)把速度脚本附加到球体上。在 Inspector 视图中,定位 Velocity Script (Script)组件,并把 Max 属性改为 25。

(1)复制蓝色的球,并用它们的颜色重命名新球:Red、Orange 和 Green。
(2)给新球提供一个与其名称对应的标签,使名称与标签具有相同的含义很重要。
(3)把合适的彩色材质拖到新球上,使球具有与其名称相同的颜色很重要。
(4)在舞台中给球提供一个随机的位置和旋转角度,但是要确保它的 y 轴位置是 2。

8.球门

(1)创建一个空的游戏对象(单击 GameObject > Create Empty 命令)。把该游戏对象命名为
BlueGoal,并给它分配 Blue 标签。然后把游戏对象定位于(1.6, 2, 1.6)处。
(2)把一个盒子碰撞器附加到球门上,并选中 Is Trigger 属性。把盒子碰撞器的大小改为(1.5, 1.5, 1.5)。
(3)把一个灯光附加到球门上(单击 Component > Rendering > Light 命令)。把该灯光设置为点光源,并使之具有与球门对应的颜色。然后把灯光的强度改为 3。
(4)创建一个名为 GoalScript 的脚本,并把它附加到蓝色球门上。

(1)复制 BlueGoal。给新球门提供一个与其颜色对应的名称:RedGoal、GreenGoal 和 OrangeGoal。
(2)把球门的标签改为与其对应的颜色。
(3)把点光源的颜色改为与球门对应的颜色。
(4)定位球门。可以设置任何一个角的颜色,只要每个球门都具有它自己的角即可。另外 3 个角的位置是(1.6, 2, 48.4)、(48.4, 2, 1.6)和(48.4, 2, 48.4)。

GoalScript代码如下:

GoalScript.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class GoalScript : MonoBehaviour
{private bool solved = false;// Use this for initializationvoid Start(){}// Update is called once per framevoid Update(){}void OnTriggerEnter(Collider other){if (other.tag == tag){solved = true;other.GetComponent<Rigidbody>().isKinematic = true;}}public bool IsSolved(){return solved;}
}

9.游戏控制器

(1)向场景中添加一个空的游戏对象,把它移到某个不碍事的位置,并把它重命名为GameController。
(2)创建一个名为 GameControlScript 的脚本。然后把该脚本附加到游戏控制器上。
(3)选取游戏控制器,单击并把每个球门拖到 Game Control Script 组件上与它们对应的属性上。

GameControlScript代码如下:

GameControlScript.cs:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameControlScript : MonoBehaviour
{public GoalScript red;public GoalScript blue;public GoalScript orange;public GoalScript green;private bool isGameOver = false;// Use this for initializationvoid Start(){}// Update is called once per framevoid Update(){if (red.IsSolved() && blue.IsSolved() && orange.IsSolved() && green.IsSolved()){isGameOver = true;}if(isGameOver && Input.GetKey(KeyCode.Escape)){Application.Quit();}}void OnGUI(){if (isGameOver){GUI.Box(new Rect(Screen.width / 2 - 100,Screen.height / 2 - 50, 200, 75), "Game Over");GUI.Label(new Rect(Screen.width / 2 - 30,Screen.height / 2 - 25, 60, 50), "Good Job!");}}
}

10.游戏测试





总结

  材质:物体的质地,指的是色彩、纹理、光滑度、透明度、反射率、折射率、发光度等等。
  实际就是Shader 的实例。
  Shader 着色器:专门用来渲染3D图形技术的技术,可以使纹理以某种方式展现。
  实际就是一段嵌入到渲染管线中的程序,可以控制GPU运算图像效果的算法。
  Texture纹理:附加到物理表面的贴图。

  Physic Material 用于调整碰撞体对象的摩擦力和弹力效果。
  当两个物体发生碰撞时,所产生的碰撞效果同时受到这两个物体的Physic Material的影响。两个Physic Material的混合方式在 Friction Combine 和 Bounce Combine属性中设置。如果两个Physic Material的混合方式不一样,那么则按照以下的优先级进行混合:Maximum > Multiply > Minimum > Average。

  属性 功能
  Dynamic Friction - 作用于运动中的对象的摩擦力,通常设为0到1之间的值。值为0时,对象像冰块一样光滑;值为1时,不受力(合力为0)的对象将很快停止运动。
  Static Friction - 作用于静止在其他物体表面的对象的摩擦力,通常设为0到1之间的值。值为0时,对象像冰块一样容易滑动;值为1时,需要施加很大的力才能使对象开始运动。
  Bounciness - 对象的表面弹性。值为0时,对象完全没有弹力;值为1时,对象变为具有完全弹性的理想刚体(在碰撞过程中完全不随损失能量)。
  Friction Combine - 发生碰撞的两个碰撞体对象的摩擦力的混合方式。
  Maximum - 取两个对象的摩擦力的最大值。
  Multiply - 取两个对象的摩擦力相乘后的值。
  Minimum - 取两个对象的摩擦力的最小值。
  Average - 取两个对象的摩擦力的平均值。
  Bounce Combine 发生碰撞的两个碰撞体对象的弹力的混合方式。其参数与Friction Combine的参数相同。

  在实验中,制作了 ChaosBall 游戏。首先设计了游戏,确定了理念、规则和需求。 接着雕刻了舞台,并且知道了有时可以制作单个对象并复制它以节省时间。之后创建了玩家、混乱球、彩球、球门和游戏控制器。在实验最后,尝试了玩游戏,并且考虑了改进它的方式。

【游戏开发引擎】 实验2:Chaos Ball 街机风格游戏相关推荐

  1. 街机游戏linux模拟器_适用于Linux的5种街机风格游戏

    街机游戏linux模拟器 传统上,游戏是Linux的弱点之一. 近年来,由于Steam,GOG和其他将商业游戏引入多个操作系统的努力,这种情况有所改变,但是这些游戏通常不是开源的. 当然,可以在开源操 ...

  2. 街机飞机游戏合集_建立游戏引擎,经典街机游戏的转折以及更多游戏新闻

    街机飞机游戏合集 您好,开放游戏迷! 在本周的版本中,我们将了解开发开源游戏引擎的好处,结合了三个街机经典的新版本以及更多内容! 公开游戏摘要:2015年4月11日至18日 Pacapong:Pong ...

  3. 虚幻引擎4:打造街机经典游戏学习教程 Unreal Engine 4: Create an Arcade Classic

    比如"堡垒之夜?"掌握用于构建它的工具,因为我们使用虚幻引擎4重新创建了一个街机经典 描述 在这个游戏设计课程中,我将一步一步地指导你使用虚幻引擎4重新创建一个街机经典:首要免费下 ...

  4. 师傅带徒弟学:Python游戏开发引擎cocos2d-python-关东升-专题视频课程

    师傅带徒弟学:Python游戏开发引擎cocos2d-python-299人已学习 课程介绍         Python语言之所以受欢迎,很大的原因是有很多可以使用的库,Python社区也有很多游戏 ...

  5. 虚幻引擎4简介,UE4简介--这是一个强大的游戏开发引擎

    虚幻引擎4简介 这是一个强大的游戏开发引擎 虚幻引擎(Unreal Engine /UE)是EpicGames公司打造的游戏引擎,而UE4则其第四个大版本.虽然目前UE 5已经发布,但是仅仅是发布,U ...

  6. 所见即所得:四款免编程移动游戏开发引擎推荐

    摘要:今天Unity.Unreal.Cocos2d-x等游戏引擎大行其道,但编程基础成了很多开发者最大的门槛.其实,移动游戏的开发,并没有想象的那么困难.今天为大家推荐几款比较主流的免编程类移动游戏开 ...

  7. 爆款小游戏用的都是什么游戏开发引擎?

    随着微信生态中,小程序应用指数级的增长,许多休闲游戏变成为了众多游戏厂商流量变现的新手段.以近期很火的"羊了个羊"为例,它便是我们常常所说的小游戏. 游戏和小游戏的区别 要盘点小游 ...

  8. 任天堂游戏开发引擎_开发人员如何编程旧任天堂游戏使其平滑滚动

    任天堂游戏开发引擎 Here are three links worth your time: 这是三个值得您花费时间的链接: How developers programmed old Ninten ...

  9. Unity,最炙手可热的游戏开发引擎

    近日,Unity亚洲开发者大会在国家会议中心成功举行,引得业内人士高度关注.而纵观各大网站招聘信息,用人单位对unity开发人员的招聘可谓求贤若渴,除去高薪诱惑.升职诱惑,甚至不惜打起感情牌,动之以情 ...

最新文章

  1. PostgreSQL学习笔记4之常用数据类型
  2. Spark Standalone模式应用程序开发
  3. js javascript UTF-8 GB2312编码转换
  4. v-viewer图片打不开一直在刷新_网速很慢甚至打不开?广告弹窗太多了?有效提升网络质量的方法。...
  5. python3连接mysql获取ansible动态inventory
  6. api postmain 鉴权_API鉴权
  7. iOS8设置应用图标红点的权限问题
  8. 剑指offer——面试题20:顺时针打印矩阵
  9. 爬虫:Python爬虫学习笔记之爬虫基础
  10. Linux下搭建DNS 服务器
  11. 高德导航java_通过拼接实现高清地图的下载-高德-java实现
  12. [大话设计模式C++版] 第7章 为别人做嫁衣 —— 代理模式
  13. 2020中南大学计算机学院考研初试成绩,中南大学2020考研复试分数线已公布
  14. 关于计算机学院 公众号的名字,好听的微信公众号名字
  15. 骏文c语言银行系统,C语言学生选课管理系统
  16. 如何远程登入Windows系统?
  17. html怎么把图片做成抖动效果,css简单实现图片logo抖动摇晃效果
  18. Linux(Centos7)服务器配置Tomcat以及JDK并部署WEB项目
  19. getch()、getche()、kbhit()的使用
  20. 【原创】2009年太白山穿越

热门文章

  1. 【Python实战】Pandas:让你像写SQL一样做数据分析(一)
  2. 仿淘宝双色球走势图自定义控件
  3. 口袋中有红黄蓝白黑5种颜色的球若干个。每次从口袋中任意取出三个球,问得到3中不通过颜色的球的可能取法。(枚举)
  4. BERT模型的优化改进方法!
  5. cta策略 有哪些_什么是CTA策略?CTA策略有什么特点?
  6. C# 中委托实例的命名规则
  7. 如何用手机访问电脑本地的localhost
  8. mysql 创建用户,授权
  9. 【暖*墟】#动态规划# 基环树DP的学习与练习
  10. 单烤fpu和双烤_天选游戏本散热测试:双烤不降频,冰川散热系统惊喜满满!