Unity小游戏——武士击杀小怪兽(无限滚动的背景)

简介: Unity小游戏——武士击杀小怪兽(无限滚动的背景)


前言:

不论何种游戏,一开始的时候必须要考虑v的事情那就是游戏的内容。

决定游戏内容是有一些要注意的事项,首先是操作简单。还有一个要点是斩杀时的爽快感,画面上的大量怪物要夸张地向四处飞散

游戏演示

image.png

打怪兽


一、玩法介绍

  • 武士能够自动行走
  • 点击攻击键攻击怪物
  • 一次性斩杀多个怪物
  • 近处斩杀怪物将得到高分
  • 如果不出现失误,怪物的数量将会增加
  • 碰到怪物后将失败

二、无限滚动的背景

原理演示

image.png

打怪兽背景演示

在这个游戏中,代表玩家的武士一直向前方前进,在游戏结束之前势必将移动非常远的距离。如果将所需要的北京全部做到一个模型中,那么数据量将会非常大。而且还必须在游戏开始的时候就生成这些背景,非常麻烦。

在这个游戏中,背景仅仅用于显示,和游戏的内容们没有关系。即使重复出现同样的背景也不会影响游戏的内容。显示在画面中的也只局限于武士周围的一小部分而已。

既然这样,我们就可以反复利用几个相同的北京组件来合成背景,并且只在玩家的周边将各个组件逐个显示出来

本游戏准备了三种类型的背景组件。分别是背景A,B,C

通过循环并列显示A,B,C三种背景组件,就能够呈现出没有缝隙的背景,而实质上各个组件只有一个显示在了画面中。

刚开始时,ABC各个组件都显示在武士的周围。当游戏开始,武士移动了一定距离后,各个组件将移动到下一个合适的位置。因为总共有三种组件,所以组件的移动宽度=3×一个组件的宽度。

把这个流程用代码描述出来,就是下面这样:

FloorControl.Update方法(摘要)

    // 地面的宽度(X方向)
  public  const float WIDTH = 10.0f*4.0f;
  // 地面模型的数量
  public const int    MODEL_NUM = 3;
void  Update()
{
float total_width = FloorControl.WIDTH*FloorControl.MODEL_NUM;
    // 背景的位置
    Vector3 floor_position = this.transform.position;
    // 摄像机的位置
    Vector3 camera_position = this.main_camera.transform.position;
    if(floor_position.x + total_width/2.0f < camera_position.x) {
      // 移动到前面
      floor_position.x += total_width;
      this.transform.position = floor_position;
    }

其中,floor_position表示背景组件的位置,camera_position表示摄像机的位置。虽然程序中使用了摄像机的位置来决定背景的移动,但为了便于理解,这里我们使用武士的位置来说明。由于武士位于画面中央偏左 的位置,严格来说摄像机和武士的X坐标值并不相同。但为了别与理解背景移动的算法,不妨认为这个等式成立:摄像机的X坐标=武士的X坐标。

组件位于floor_position.x时,该组件再次出现时的坐标为“floor_position.x+total_width”

如果摄像机的X坐标大于中间点floor_position.x+total_width/2.0f,那么距离下次出现的位置比距离现在的位置更近,组件将移动到下一地点

三、

小结这次我们介绍了无限循环的背景的基本制作方法。有时需要碰撞检测的游戏中会创建一个所谓的“地形”模型,但即便是在那种情况下,不影响游戏的远景也常常铜鼓这种循环显示背景组件的方法来实现。


相关文章
|
4月前
|
图形学
Unity小游戏——迷你拼图
Unity小游戏——迷你拼图
110 1
|
4月前
|
图形学
Unity小游戏——使被砍中的怪物四处飞散
Unity小游戏——使被砍中的怪物四处飞散
|
4月前
|
图形学
unity小游戏——得分高低的判定
unity小游戏——得分高低的判定
|
4月前
|
图形学
Unity小游戏——武士和怪物的碰撞检测
Unity小游戏——武士和怪物的碰撞检测
|
4月前
|
图形学
Unity小游戏——怪物出现模式的管理
Unity小游戏——怪物出现模式的管理
|
4月前
|
机器学习/深度学习 算法 图形学
Unity小游戏——无限滚动的背景的改良
Unity小游戏——无限滚动的背景的改良
|
4月前
|
C# 图形学
【Unity 3D】元宇宙案例之虚拟地球信息射线实战(附源码、演示视频和步骤 超详细)
【Unity 3D】元宇宙案例之虚拟地球信息射线实战(附源码、演示视频和步骤 超详细)
50 0
|
4月前
|
人工智能 自然语言处理 区块链
【Unity 3D】元宇宙概念、应用前景、价值链等概述
【Unity 3D】元宇宙概念、应用前景、价值链等概述
52 0
|
4月前
|
vr&ar C# 图形学
【Unity 3D】VR飞机拆装后零件说明功能案例实战(附源码和演示视频 超详细)
【Unity 3D】VR飞机拆装后零件说明功能案例实战(附源码和演示视频 超详细)
38 0
|
4月前
|
vr&ar C# 图形学
【Unity 3D】VR飞机动态拆装及引擎开关控制案例(附源码和演示视频 超详细)
【Unity 3D】VR飞机动态拆装及引擎开关控制案例(附源码和演示视频 超详细)
39 0