Unity 无限地形生成及玩家控制

实验5.Unity 无限地形生成及玩家控制

这次实验主要实现了无限地形的生成和很常见的玩家控制相机跟随雾区设置unity简单计时器的制作
素材都是直接在unity asset store 免费下载的。

一、实验要求

目的:户外场景构建。
要求:构建一个户外开放世界游戏,为该游戏添加天空,地形,植物,并支持场景里自由漫游。
沿着任意方向持续行走1分钟,不能跑到边界。

二、软件核心代码(算法+代码文本)

对于这次实验,我主要实现了 3个部分的内容,

1.脚本设置玩家的基本移动:

在这里插入图片描述

同时给人物添加状态动画的切换,给人物添加了空格跳跃的功能:

在这里插入图片描述

实现部分核心代码:

在这里插入图片描述

**中途遇见了一个比较琐碎的问题:**character controllor刚好与人物贴合(正好包裹人物),但是运行以后角色却总是飘浮在空中。

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


为了效果我把character controller的center位置调高了一点,然后又对Height进行了调节,这个地方我还是有点不懂,center既然是胶囊碰撞体与游戏对象的相对位置,为什么center位置明显调高后player才能正常落地呢?唯一的解释是player本身的位置就偏高了,但是我设置了重力,人物应该会落下….我有点搞不懂这是为什么,但是还是这样解决了。

2.设置相机平缓跟随人物移动:

在这里插入图片描述


实现部分核心代码:

在这里插入图片描述

3. 构建一个户外开放世界(天空盒,雾区,无限地形)

1)给当前scene添加一个天空盒,我在asset store下载了一些资源,然后直接把天空盒资源添加到了当前scene当中,效果如下所示。

在这里插入图片描述


下一个地形资源,稍微做一下美化。
用Terrain自带的笔刷把地形稍微刷一刷,方便测试。

在这里插入图片描述


设置雾区。
雾区可以再菜单栏Windows–>Rendering–>light settings中设置,如下图所示:

在这里插入图片描述


然后给导进去的资源添加MoveTerrain代码,使其随人物的移动而移动。

在这里插入图片描述


以上完成后效果如下:

在这里插入图片描述


(2)设置无限地形的生成:
关于怎么实现让人物在地面上跑一分钟,我想到两种方法:
a. 实现思路1:
让地形跟随着人物移动。检测到人物从地形中心移动超过地形宽度一半时,将整个地形也向前移动总宽度一半的距离。

在这里插入图片描述


实现思路核心代码:
首先对地形当前的位置及地形中心位置进行初始化,Terrain地形中心点的位置与其position中的位置有所不同,需要稍微简单算一下:

在这里插入图片描述


先查看一下地形的长度和宽度:

在这里插入图片描述


然后完成功能需要设置的变量:

在这里插入图片描述


在界面中把地形要检测的玩家进行绑定:

在这里插入图片描述


由于terrain的初始位置和中心位置是不一样的,我们用两个变量来分别记录他们。

在这里插入图片描述


检测玩家的位置,并计算玩家与地形正中心的相对距离:

在这里插入图片描述


实现思路2:
检测人物在当前地形中的位置,当玩家位置里地形块中心位置距离超过地形快总长的1/2时,新生成地形块,新地形块的位置相较于原地形向前了1/2个总长。
上面提到的方法1有个漏洞:就是我只能沿着一个方向上跑1分钟。
而现在这个方法可以让我在各个方向上跑不到头。

首先把地形设置为预设体prefab Terrain。

在这里插入图片描述


在代码里面添加:

在这里插入图片描述


既然要在场景中生成游戏物体,这句话的意思就是要获得要生成游戏物体myTerrain的引用。所以我们在预设里面绑定引用。

在这里插入图片描述


现在开始我的代码实现,因为我只让触发条件时新生成一个预设实例,所以我用了一个deltaNx,deltaNz来记录变换量。(不用的话它就疯狂生成实例,然后卡死….)

在这里插入图片描述


在初始的时候我的地形块是这样的:

在这里插入图片描述


我横着跑(沿着x轴跑,之前只能沿着z轴)成功clone以后如下图所示!

在这里插入图片描述


边界处的效果:

在这里插入图片描述

(3)Unity 简易计时器的制作:
上课刚讲到UGUI。我就试着自己做一个简单的计时器练一练手。
首先在scene里create选择UI,新建画布canvas,然后在canvas下新建Text 文本物体。

在这里插入图片描述


关于文本Text的位置有下面的一点要注意,因为我的Terrain和player全部都在下面,我最开始时惯性思维把它放在左下角了,后来发现位置有问题:

在这里插入图片描述


下面来给我的计时器添加代码,实现计时的功能:
实现很基础,稍微声明一下时分秒变量,绑定游戏中的text,写一下进位法则即可,实现代码如下所示:

在这里插入图片描述


关于Time.deltaTime的理解:
Time.deltaTime 表示从上一帧到当前帧时间,以秒为单位。比如说每秒60帧,那么Time.deltaTime就是1/60秒。

三、游戏运行效果(截图)

效果截图(部分):

四、实验心得

做实例化的时候出现了这个错误。

在这里插入图片描述

我查了一个小时,最后发现变量名敲错了,Terrain敲成Terrian了,被自己蠢哭。

原文地址:https://blog.csdn.net/qq_45642765/article/details/115103129

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


这篇文章主要介绍了Unity游戏开发中外观模式是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章主要介绍Unity中地面检测方案的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1.普通射线在角色坐标(一般是脚底)...
这篇文章主要介绍了Unity游戏开发中如何消除不想要的黄色警告,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带...
这篇文章主要介绍了Unity中有多少种渲染队列,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解
这篇文章主要介绍Unity中如何实现Texture,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!了解Texture2D 如上图,Texture2D是一张
小编给大家分享一下Unity中DOTS要实现的特点有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让...
这篇文章给大家分享的是有关unity中如何实现UGUI遮罩流光特效的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。下面是核心shader:Sh...
这篇文章主要为大家展示了“Unity中如何实现3D坐标转换UGUI坐标”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下...
这篇文章主要介绍了Unity游戏开发中设计模式的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章主要介绍了Unity中如何实现仿真丝袜渲染,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了...
这篇文章给大家分享的是有关Unity插件OVRLipSync有什么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。项目需要接入对话口型动...
这篇文章主要介绍了Unity性能优化之DrawCall的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家...
这篇文章给大家分享的是有关Unity给力插件之Final IK怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。这插件有什么用:一般游...
这篇文章给大家分享的是有关Unity中如何内嵌网页插件UniWebView的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、常见Unity中内...
小编给大家分享一下Unity如何做流体物理的几个轮子,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让...
小编给大家分享一下Unity中Lod和Occlusion Culling的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收...
这篇文章将为大家详细讲解有关Unity中LineRenderer与TrailRenderer有什么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获...
这篇文章主要介绍了Unity中coroutine问题的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起...
这篇文章将为大家详细讲解有关unity中spine怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。骨骼动画首先我们来看到...
这篇文章主要为大家展示了“Unity Shader后处理中如何实现简单均值模糊”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学...