作为新人的我认为我的一些经验,对其他零基础的小白可能也有一些启发。算是个人的一些经验和犯得一些错误的总结。有一定基础的人可以直接跳过本文。本文真的是面向给家闲的没事干想弄个小游戏的零基础的朋友们。
重要的事再说一次本文仅对零基础的一些朋友可能有一些帮助,如果您有一定经验可直接忽略本文。(本文属于系列文 看完这个系列零基础的一样可以完成跑酷类游戏制作但需要自己找素材)
一,资源包的导入
资源包的导入非常简单,首先找到一个资源包(自行找就可以没有的话也可以看看反正方法是一样的)。下载下来之后应该是这样滴图标。然后我们打开Unity新建一个3D的project.然后拖动你的素材包图标拖到
然后点击import即可完成导入。 (素材包来自CSDN学院 没有也没事这节课我没用素材包哈哈哈哈哈哈哈)
二,创建场景(路面)
如果您的素材包有路面可以直接拖拽,如果没有可以这样在上方选项的GameObject选择3d Object 然后选择plane做路面,cube做跑酷游戏的主角。(如果您有素材 我会在下一次博客中更新素材动画效果的引入。也可以先看看这个操作上没什么区别。)于是我们得到了一个cube和一个plane。当然您的屏幕上的应该是白色的我因为觉得白色有点乱就把环境光调了一下
环境光可以在 Window选项卡Rendering选项中的Light Settings找到可以在这里设置一个你喜欢的环境光。(✪ω✪) 就是中间那个条条选它!选它!φ(>ω<) ** 我们需要知道***plane也就是我们的路面的长度,这个我们可以通过控制cube的大小来实现。点击cube将它拖拽到图示位置(上上图)后点击cube将它的transform属性里的scale的数值更改知道它与你的路面等长。像图片一样,于是我们通过cube测量了plane的长度为10然后将cube恢复为你所需要的大小(你想要的人物的大小与高度)
三 无限路面
首先我们先复制出来两个新的plane并以此调整它们Transform属性的position让它们依次相连。(我选择的是z轴方向所以接下来的脚本什么的都会是关于z轴如果你选的不是请自行修改。)复制操作只需要在左侧栏框里右键plane。然后复制粘贴都会出现,我就不赘述了。做完效果是这样的:
然后我们在左侧窗口创建一个empty创建好后左侧栏框会多出一个GameObject,然后我们将plane们都拖入GameObject栏成为这样。并将GameObject重命名为Road然后我们复制一个Road并粘贴到左侧边框,出现Road(1),将Road的 position设置为(0,0,0) Road(1)的 position设置为(0,0,30)让他们连接在一起。然后我们在下方的文件筐里创建一个文件夹,命名为Script。然后点击cube 选定右侧的Add Component创建一个 new script (搜索栏输入 Floor 然后点击 new script即可创建 并命名为Floor。)现在我们要完成的是无限路的脚本(鬼打墙)。先讲一下原理:步骤是这样的
- 当角色走过第一组road,第一组road的Z坐标增加30
- 正好接到road(1)后面,然后当角色走过road(1)重回road时
- road(1)也执行一样的操作Z坐标加30接到变化后的road后面
具体脚本实现
在下方文件栏里找到刚刚创建的Floor 双击进入VS编辑
`
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Floor : MonoBehaviour
{ public GameObject Now;//我们先做两个变量
public GameObject NEXT;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()//加载
{ if(transform.position.z > Now.transform.position.z + 30)//当我们的角色走过ROAD并多出五个单位时执行
{
Now.transform.position = new Vector3(0, 0, NEXT.transform.position.z + 30);//让ROAD移位到ROAD(1)后面
GameObject change = Now;//重置NOW 和 NEXT(互换)
Now = NEXT;
NEXT = change;
}
}
}
这个就是无限路,我们再讲 ROAD 和 ROAD(1)分别填入 这个script。如图右下方 Floor处将Road和Road(1)分别拖入对应位置
然后我们开始做下一项让角色动起来
点击cube这次创建一个名字为 Run的new script创建方式跟之前一样养成一个好习惯 要在下方文件栏里创建一个Script文件夹专门装Script文件哦( • ̀ω•́ )✧现在我们进入文件夹 双击刚刚创建的Run script开始编辑
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Run : MonoBehaviour
{
public float speed = 2;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.Translate(new Vector3(0, 0, speed* Time.deltaTime))//使speed具有实际意义真正使他动起来
}
}
好了 这一部分也实现了。现在我们运行一下试一下效果。嗯 十分的顺利。我们顺利的让这个cube感觉到了鬼打墙 φ(>ω<*)
还有一个知识也是比较重要的 是这行
transform.Translate(new Vector3(0, 0, speed* Time.deltaTime))//使speed具有实际意义真正使他动起来
这里面的 Time*deltaTime 很多人就只是记住了这个不知道为什么,这个说明一下,如果不加后面这个的话,会有一个结果那就是配置好的电脑在运行同一段距离所用的时间不同或者说有明显差异(在不同帧的控制下),这明显是不行的,像咱这个小项目还体现不出来什么,但您试想一下,你要是那天玩游戏跟人solo你跟对面放同一个技能结果对方电脑配置高读条比你快几倍可还行玩家心态会爆炸的。但是在加上后面这部分后,再重新控制在不同帧下运行可以发现差异会变得很小。