其实用Unity制作游戏并不难,如果你想学习,那我就建议你想从制作一个简单的跑酷游戏来找到兴趣,因为如果你一开始就一直学习一些没什么必要的语法,这样就会让你一开始就失去了信心,失去了学习Unity的动力,所以如果你先学习如何制作一个简单的跑酷地图,然后你就会知道Unity是多么简单,这样你就会拥有学习的动力,并且这样也可以方便你记住代码是如何写的
Unity(什么版本都行)
电脑(能抗住就行)
先创建一个项目,随便怎么命名都可以
我就命名为简单跑酷游戏
这一次竟然要制作一个简单的跑酷游戏,所有我们就只需要实现
主角的移动、摄像头的跟随、自行搭建跑酷地面这些最主要的功能
打开项目,在左边的Hierarchy栏中创建一个Cube
右键->3D Object->Cube
可以随便命名,我直接命名为chushen_dot
之后再命名几个Cube命名为other_dot_数字命名的时候一定要使用英文,不要使用中文,否则会报错
我这里就创建了5个
之后我们就再创建一个Cube命名为zhong_dot这个方块是用来作为终点的方块
最后就创建一个Cube命名为player这个方块用来作为我们的玩家方块
将跑酷是的场景按照自己的喜好搭建一下,也可以像我这样
那些方块的颜色其实是你要创建几个Material
右键->Create->Material
然后将对应你自己喜好的颜色处理一下,最后将这些材质拖到场景中的对应方块上
注意,这里的摄像头一定要作为一个第三人称的视角面对着名为player的方块,否则等会写完代码运行效果符合真正的结果
可以使用移动工具和旋转工具来实现
由于主角名为player的方块需要拥有物理中的重力自然下降的属性,所以我们给它添加一个Rigidbody组件,让它能够自然下落
点击player->右边的Inspector栏中划到最下面->Add Component->搜索Rigidbody->Rigidbody这样我们就给player方块添加了刚体组件(Rigidbody)
在Assets文件夹中创建一个名为Camera_move.cs和Player_move.cs的C#代码文件
先打开Carmera_move.cs的代码文件
如文件名所知,这个代码文件里面写的是关于摄像头跟随文件的代码
public GameObject Target; //用来接收跟随摄像头跟随的方块
public float s = 2f; //速度
Vector3 distance; //用来处理坐标之类的数据
在**void Start(){}**函数里面写上
distance = transform.position - Target.transform.position;
用来处理相机所在相对于player方块的位置
接下来,删除原有的
void Update(){}
改为
void LateUpdate(){}
在里面加上
transform.position = Vector3.Lerp(Target.transform.position + distance, transform.position, Time.deltaTime * s); //此代码可以计算出摄像机在移动时保证撒丝滑坐标
transform.LookAt(Target.transform.position); //摄像头面对玩家
LateUpdate函数是在所有Update函数执行完毕后被调用的,它通常用于处理相机的跟随逻辑。由于相机的跟随操作需要在游戏物体的移动之后进行,所以将相机的跟随逻辑放在LateUpdate函数中可以确保相机始终能够跟随游戏物体
总结所有代码就是如下
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Camera_move : MonoBehaviour
{
public GameObject Target;
public float s = 2f;
Vector3 distance;
// Start is called before the first frame update
void Start()
{
distance = transform.position - Target.transform.position;
}
// Update is called once per frame
void LateUpdate()
{
transform.position = Vector3.Lerp(Target.transform.position + distance, transform.position, Time.deltaTime * s);
transform.LookAt(Target.transform.position);
}
}
保存好,关闭代码回到Unity编译一下
我们继续写
接下来我们打开Player_move.cs
public float moveSpeed = 10f; //移动速度
public float turnSpeed = 100f; //旋转速度
public float jumpSpeed = 10f; //跳跃速度
删除
void Start(){}
在
void Update(){}
里面添加
if (Input.GetKey(KeyCode.W)) //判断按下的按键是否是W
{
transform.Translate(Vector3.forward * moveSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.S)) //判断按下的按键是否是S
{
transform.Translate(-Vector3.forward * moveSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.A))//判断按下的按键是否是A
{
transform.Rotate(Vector3.up, -turnSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.D))//判断按下的按键是否是D
{
transform.Rotate(Vector3.up, turnSpeed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.Space))//判断按下的按键是否是空格
{
transform.Translate(Vector3.up * jumpSpeed * Time.deltaTime);
}
保存,回到Unity,运行程序,此时你就会发现
成功啦
此文章我们介绍了如何制作一款简单的跑酷游戏,但是有人此时会问
甲:你这个游戏怎么没有结束啊
回答:其实并不是我不想介绍,只是我是真的不会怎么写代码,所以才没有制作游戏结束
如果有哪位大佬知道怎么碰撞,并且可以让游戏结束进程,请在评论区告诉我,我们一起学习!