在Unity中实现一个简单的跑酷地图

news/2024/11/30 5:47:17/

突然回想起了智能机刚刚兴起的时候火起来的游戏,神庙逃亡。记得当时看过一个视频,神庙逃亡的终点是什么,当时觉得,哇,好神奇呀!神庙逃亡居然真的有终点,为啥我跑不到,我太菜了。

其实我们仔细观察一下,跑酷类游戏,不论是神庙逃亡,还是地铁跑酷,他们的地图总是无限循环的,从理论上来说,神庙逃亡是没有终点的。(当然了,除非程序猿大大们加了彩蛋,跑到多少多少真的到了终点,那就另当别论啦)
那么,像这种跑酷类游戏的地图应该怎么去实现呢?下面就跟我一起来做一个超简单的例子吧。
## 首先,让我们先打开unity,创建一个新项目。在这里插入图片描述
搭建好我们需要的场景,这里我用小方块来代替人物,给小方块加上Rigidbody组件,使它具有物理特性在这里插入图片描述因为我们要做一个跑酷类的地图,所以我们肯定要让我们的小方块动起来。下面,让我们用一段很简单的代码来让他动起来吧。

public class CharacterMove : MonoBehaviour
{public float movespeed = 5f;private void Update(){float a= Input.GetAxis("Horizontal");Vector3 mspeed = new Vector3(this.transform.forward.x, this.transform.forward.y, this.transform.forward.z) * movespeed*a;Vector3 tspeed = new Vector3(-this.transform.right.x, -this.transform.right.y, -this.transform.right.z) * movespeed;this.transform.position += (mspeed+tspeed) * Time.deltaTime;}
}

就这么简单的几行代码,我们的物体就能够沿着轨道进行前进了,而且在前进过程中,我们如果按下“A”键或者“D”键或者是左右键,小方块就会按照我们按的键位进行左右移动。如果直接复制粘贴的话可能会出现小方块移动的方向不是我们想要的结果,其实是坐标系的问题,按照Scene面板中的坐标系对代码进行相应的更改就可以啦。
我们写完后突然发现,小物块能动是能动了,可是,他一会跑着跑着就跑出屏幕了,为啥呢???
这个时候我们就需要用几行代码让相机跟随着物体啦。

public Transform character;Vector3 distance;public float h_speed = 1f;public float x_speed = 2f;Vector3 ve;private void Start(){distance = transform.position - character.position;}public void LateUpdate(){transform.position = Vector3.SmoothDamp(transform.position, character.position + distance,ref ve,0);}

然后这时候我们把这个脚本挂给我们的相机,会发现相机上多出了一个变量
然后我们把我们的物体拖过去就好啦,这时候我们会惊奇的发现相机他动起来了。然后我们又发现了一个问题,这个物体跑着跑着就掉下去了,呃。。。。这该怎么办呢?这就到我们最关键的一步啦,该怎么让道路无限的延伸下去。

我们在每段道路上加上一个空物体,设置他们的tag为Aripos,给他们增加一个boxcollider,然后勾选上 is Trigger,使其成为检测器。然后,我们用代码创建两个链表,一个用来存放道路,一个存放检测器。

public class RoadLoop : MonoBehaviour
{public List<Transform> roadlist = new List<Transform>();public List<Transform> arrivePoslist = new List<Transform>();public void changeroad(Transform arrivepos){int index = arrivePoslist.IndexOf(arrivepos);Debug.Log(index);if (index >= 0){int lastindex = index - 1;if (lastindex <0){lastindex = arrivePoslist.Count - 1;}roadlist[index].position = roadlist[lastindex].position + new Vector3(-5.5f, 0, 0);}}
}

这时候我们回到Hierarchy面板,创建一个空物体,把这段代码挂到他的身上,也就是这样子:
在这里插入图片描述
这时候因为我创建了三段道路,三个检测器,所以把每个链表的长度都设置成了三

这个也可以设置的长一点,多设置几段道路也可以

然后我们分别把检测器和道路拖拽到相对应的位置上

这里拖拽道路的时候要注意一下,因为我们的角色要碰撞到编号为1的检测器,然后移动编号为0的道路到道路最后边,所以我们要把第三段道路放在第一个位置

也就是这样

3
1
2

然后我们在移动的代码中用一个RoadLoop的对象来调用方法改变道路的位置。也就是这样:

public  RoadLoop roadloop;public void OnTriggerEnter(Collider other){if (other.tag.Equals("Aripos") ){roadloop.changeroad(other.transform);}}

然后在Inspector视图中把road loop的空物体拖拽过去,也就是这样:
在这里插入图片描述
然后点击运行,我们就会发现道路就无穷无尽的循环下去啦。

这里有一篇博客写的比我更详细,我在写的过程中也借鉴了这位大神的博客,大家可以去看一下呀
【Unity3D实战】零基础一步一步教你制作跑酷类游戏(填坑完整版)

讲道理,我是万万没想到,我写这篇这么简单的博客的时候还是遇到了很多问题,比如常见的空指针,或者是移动方向问题,这些都暴露出来我的基本知识掌握的还是太差,不熟练,要学习的东西还是太多,大家一起加油吧!


http://www.ppmy.cn/news/414604.html

相关文章

unity3D实践报告-忍者跑酷

一、游戏介绍 背景&#xff1a;2D跑酷类游戏背景图需要与主角做相对运动&#xff0c;来让玩家感觉主角在移动&#xff0c;为实现这一效果&#xff0c;就需要背景图的移动&#xff0c;而由于机型的限制&#xff0c;图片资源每张大小不能超过2048*2048&#xff0c;所以做跑酷类游…

UNITY 跑酷学习2

前言 今天又看了知乎&#xff0c;又看到了学习方法&#xff0c;里面提到意志力的重要性&#xff0c;以及有效学习的概念&#xff0c;我看到了里面说&#xff0c;写博客能增强我的意志力&#xff0c;所以我今天来将昨天的工作添加到博客&#xff0c;算一次积累&#xff0c;训练意…

单片机中移植lua解释器

一、基本开发环境 开发环境基于野火STM32开发板。 前测试的 Lua 解释器版本为 5.4.2。 官网下载lua资源包&#xff0c;下载地址如下&#xff1a; https://www.lua.org/ https://github.com/rjpcomputing/luaforwindows/releases lua: Lua 国内镜像 (gitee.com)‍ 二、移植Lua解…

对象存储服务MinIO简介

黑马程序员学习资料 MinIO简介 MinIO基于Apache License v2.0开源协议的对象存储服务&#xff0c;可以做为云存储的解决方案用来保存海量的图片&#xff0c;视频&#xff0c;文档。由于采用Golang实现&#xff0c;服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单&…

Python 中的结构模式匹配

文章目录 结构模式匹配简介及其重要性在 Python 中使用结构模式匹配match ... case 语句的基本使用使用 match ... case 来检测和解构数据结构使用 match ... case 与捕获模式和序列模式使用 match ... case 和通配符模式在类模式中使用 match ... case使用 match ... case 和 …

AIGC 加持 Cocos,游戏开发需要几步?

近日&#xff0c;游戏行业知名的 B2B 大会 WN 2023 大会于土耳其首都伊斯坦布尔顺利举办。本次大会邀请了来自全球的游戏开发商、媒体、发行商、分发平台等行业决策者&#xff0c;共同探讨游戏行业未来发展态势&#xff0c;进一步拓展业务&#xff0c;并在世界范围内寻找新的合…

智驾传感器新风向!拐点将至

“大家都比较关注激光雷达&#xff0c;尤其是在今年整个行业聚焦降本的大背景下&#xff0c;这个赛道还行不行&#xff1f;”6月8日&#xff0c;2023年度&#xff08;第十四届&#xff09;高工智能汽车开发者大会上&#xff0c;高工智能汽车研究院首发《2023-2025年中国汽车市场…

华为认证 | HCIA-SDN 考试大纲

01 考试概述 02 考试范围 HCIA-SDN V1.0考试覆盖数据通信基础知识&#xff0c;SDN架构&#xff0c;SDN二、三层网络原理&#xff0c;SDN接口协议原理比如OpenFlow协议、Netconf协议、RestFul协议原理&#xff0c;以及在华为交换机与路由器中的实现。 SDN二三层技术&#xff1…