一、写在前面


本文提供常见2.5D游戏创建地图的方式,实现思路来源于Google以及个人的分析。如有解释不妥当之处,还请各位及时指出。
下面会留一个本文配套工程的运行截图,过后将开始我们的正文。

二、2.5D游戏的实现思路

2.5d游戏介于2d游戏和3d游戏之间,是一种特别的游戏呈现方式。常见实现思路分为两种:

  • 一种是利用3d的场景和资产,但是玩家只能在固定的两个轴上移动,代表作有:LOL , 超级马里奥2等

    《超级马里奥2》

  • 第二种是利用2d资产和知识,利用第三维的视差效应,实现相应的效果。代表作有饥荒,The Wild and Heart

    《饥荒》

三、思路一:利用3d资产实现2.5D效果

1.分析

常规的3d物体的移动是建立在三个轴上的

如果我们只提取其中一个轴会是什么样的?

  • 提取X—Y轴,物体呈现出一种被压缩在视角的正前方的感觉。

《超级马里奥2》

  • 提取X—Z轴,物体呈现出一种被俯视的感觉。

    《八方旅人》

2.Unity中的实现方法

  • 首先新建一个2D项目
  • 然后绘制一个2D地图,为树木等添加碰撞器
    我这里用的是瓦片地图和平铺调色板来创建的
  • 创建角色sprite并添加碰撞器,动画器,刚体,在动画器中编辑人物往不同方向行走的动画


  • 编写PlayerMovement.cs脚本,控制人物移动
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;public class PlayMovement1 : MonoBehaviour
{public float speed = 5;private float inputX;private float inputY;private float stopX, stopY;private Animator animator;new private Rigidbody2D rigidbody;private Vector3 offset;// Start is called before the first frame updatevoid Start(){offset = Camera.main.transform.position - transform.position;rigidbody = GetComponent<Rigidbody2D>();animator = GetComponent<Animator>();}// Update is called once per framevoid Update(){inputX = Input.GetAxisRaw("Horizontal");inputY = Input.GetAxisRaw("Vertical");Vector2 input = new Vector2(inputX, inputY).normalized;rigidbody.velocity = input * speed;if(input != Vector2.zero){animator.SetBool("isMoving", true);stopX = inputX;stopY = inputY;}else{animator.SetBool("isMoving", false);}animator.SetFloat("InputX", stopX);animator.SetFloat("InputY", stopY);Camera.main.transform.position = transform.position + offset;}
}
  • 调整视角,将2d视图变为3d视图,摄像机变为45°俯视视角。

  • 此时场景物体并没有立起来,需要为场景物体和角色设置一个脚本,对其和相机旋转角度相同以及设置相机与人物的移动同步。

//FaceCamera.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class FacingCamrea : MonoBehaviour
{Transform[] childs = null;// Start is called before the first frame updatevoid Start(){childs = new Transform[transform.childCount];for (int i = 0; i < transform.childCount; i++){childs[i] = transform.GetChild(i);}}// Update is called once per framevoid Update(){for(int j = 0; j <  childs.Length; j++){childs[j].rotation = Camera.main.transform.rotation; }}
}

3.展示

Unity2.5d游戏实现

4.工程文件

https://download.csdn.net/download/Tom870223050/85550510

【独立开发一个2.5D游戏 】—— 2.5D视角构建相关推荐

  1. 如何开发一个扫雷小游戏?

    如何用C#开发一个扫雷小游戏? 十分自豪的说,计算机编程就是变魔术,每一个coder都是一个魔术师. 初学C#的时候,我相信很多人都和我一样,学会了基本语法,掌握了基本的数据结构,也见过了不少微软提供 ...

  2. mysql独立开发_独立开发一个 App 是一种怎样的体验?

    我要回答一下这样孤单的问题.哈哈哈. 我做过2个已经上线的APP. 第一个<仅仅电影>(已经下线了): 那时候年轻,想做一个独立的电影影单类的APP,推荐很多好看电影.然后想法立了就开始做 ...

  3. 开发一个Canvas小游戏 实现一个游戏“引擎”

    前言 这个游戏其实在三四年前就写了,中间还重构过好几次,之前都是用简单的面向对象和函数式编程来写,游戏中的元素关系到还是分的挺开,但是游戏的渲染,运算等逻辑分的不够清晰,整个逻辑基本都是自顶向下的流水 ...

  4. 用python开发一个推箱子游戏

    好的,为了开发一个推箱子游戏,你需要了解一些基本的编程概念,如变量,循环,条件语句和函数. 首先,你需要定义游戏场景,即箱子和人物所在的空间.你可以使用二维数组表示游戏场景,每个元素都代表一个格子. ...

  5. Silverlight C# 游戏开发:Flyer01开发一个有趣的游戏

    前面扯了很多理论,虽然很无聊但是对于开发游戏来说非常的有用,在早年的开发环境,没有这么多可视的工具,一切靠的是对画面的理解以及游戏感觉Coding代码,然后不厌其烦的测试修改测试修改. 在未来的一段时 ...

  6. Step by Step 使用HTML5开发一个星际大战游戏(1)

    本系列博文翻译自以下文章 http://blog.sklambert.com/html5-canvas-game-panning-a-background/ Languages: HTML5, Jav ...

  7. 如何开发一个小程序游戏?

    小程序游戏开发需要开发人员具备以下几点能力: 有一定的编程基础,例如 JavaScript.TypeScript 至少熟悉一种游戏开发引擎,比如 Cocos.Unity等 对游戏机制.游戏系统有一定的 ...

  8. Python开发一个滑雪小游戏

    擅长领域:Python开发一个小游戏 今日重点:一步步分析and越过亚马逊的反爬虫机制 一.如何搭建开发环境环境 一起来学pygame吧 游戏开发30例(开篇词)--环境搭建+游戏效果展示 windo ...

  9. 如何从零开始开发一个实时联机游戏?

    本文作者为明星团队汉家松鼠游戏工作室的CEO成功(CG),他将于11月10日在深圳举办的第四期腾讯游戏学院品鉴会上,分享汉家松鼠旗下<汉家江湖>.<江湖X>等游戏从立项.研发到 ...

最新文章

  1. IPython 更改默认字体大小
  2. 2021 几何图机器学习大盘点 | 几何深度学习先驱 Michael Bronstein长文解读
  3. 关于系统重装的一件小事
  4. Spring OXM- 漫谈XML解析技术
  5. google gperf tool【cpu】
  6. 【django】配置文件
  7. Android 7.0 SystemUI 之启动和状态栏和导航栏简介
  8. 方法 | 机器学习(深度学习)通用工作流程
  9. 大数据基础知识问答----hadoop篇
  10. linux如何将文件夹添加到书签,桌面应用|[新手技巧] 如何在Ubuntu中添加和删除书签...
  11. linux iphone文件,在linux下生成iphone所需要的视频和音频文件的方法总结
  12. 管家婆 源码 php,在windows平台上构建本身的PHP
  13. virtualbox安装win7_全网最详细的安装eNSP和HCL步骤和出现的问题及解决方法
  14. RK3288_Android7.1调试RTC总结(一)
  15. 视频中的外挂字幕、硬字幕、软字幕定义的区别
  16. Simulink电力系统仿真-三相短路
  17. python题目-青蛙跳井口
  18. 霍尔传感器学习使用心得
  19. 外卖扫码点餐独立全开源小程序源码+VUE前端
  20. 易基因项目文章|WGBS+RNA-seq揭示PM2.5引起男性生殖障碍的DNA甲基化调控机制

热门文章

  1. easyui_04.DataGrid数据查询
  2. 成为UX设计师:你需要知道的六个基本步骤
  3. 正点原子达芬奇artix7开发板连接usb和xilinx下载器冲突的解决办法
  4. sql镶嵌查询_【SQL】嵌套查询与子查询
  5. 以太网 DHCP(DHCP的8种报文、DHCP配置、DHCP中继)
  6. 机器学习之多元分类(机器学习基石)
  7. 花呗分期代理入局时间很关键,一招教你高效选择服务商
  8. ssm+jsp计算机毕业设计NN皮草销售网店的设计与实现8pq8z(程序+LW+源码+远程部署)
  9. 游戏AI—行为树研究及实现(转自月夜魔术师 https://segmentfault.com/a/1190000012397660)
  10. 字母预言卡里的魔术与数学(二)——魔术背后的建模思路