教你如何使用Unity制作一个简单的跑酷游戏

教你如何使用Unity制作一个简单的跑酷游戏

  • 前言
  • 正片
    • 准备材料
    • 场景搭建
    • 赋予方块属性
    • 编写代码
  • 结语

前言

其实用Unity制作游戏并不难,如果你想学习,那我就建议你想从制作一个简单的跑酷游戏来找到兴趣,因为如果你一开始就一直学习一些没什么必要的语法,这样就会让你一开始就失去了信心,失去了学习Unity的动力,所以如果你先学习如何制作一个简单的跑酷地图,然后你就会知道Unity是多么简单,这样你就会拥有学习的动力,并且这样也可以方便你记住代码是如何写的

正片

准备材料

Unity(什么版本都行)
电脑(能抗住就行)

先创建一个项目,随便怎么命名都可以
我就命名为简单跑酷游戏
这一次竟然要制作一个简单的跑酷游戏,所有我们就只需要实现
主角的移动、摄像头的跟随、自行搭建跑酷地面这些最主要的功能
在这里插入图片描述
打开项目,在左边的Hierarchy栏中创建一个Cube
右键->3D Object->Cube
可以随便命名,我直接命名为chushen_dot
之后再命名几个Cube命名为other_dot_数字命名的时候一定要使用英文,不要使用中文,否则会报错
我这里就创建了5
之后我们就再创建一个Cube命名为zhong_dot这个方块是用来作为终点的方块
最后就创建一个Cube命名为player这个方块用来作为我们的玩家方块

场景搭建

将跑酷是的场景按照自己的喜好搭建一下,也可以像我这样
教你如何使用Unity制作一个简单的跑酷游戏_第1张图片
那些方块的颜色其实是你要创建几个Material
右键->Create->Material
在这里插入图片描述
然后将对应你自己喜好的颜色处理一下,最后将这些材质拖到场景中的对应方块上

注意,这里的摄像头一定要作为一个第三人称的视角面对着名为player的方块,否则等会写完代码运行效果符合真正的结果
教你如何使用Unity制作一个简单的跑酷游戏_第2张图片
可以使用移动工具和旋转工具来实现
在这里插入图片描述

赋予方块属性

由于主角名为player的方块需要拥有物理中的重力自然下降的属性,所以我们给它添加一个Rigidbody组件,让它能够自然下落
点击player->右边的Inspector栏中划到最下面->Add Component->搜索Rigidbody->Rigidbody这样我们就给player方块添加了刚体组件(Rigidbody)

编写代码

Assets文件夹中创建一个名为Camera_move.csPlayer_move.csC#代码文件
先打开
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,运行程序,此时你就会发现
成功啦

结语

此文章我们介绍了如何制作一款简单的跑酷游戏,但是有人此时会问

甲:你这个游戏怎么没有结束啊
回答:其实并不是我不想介绍,只是我是真的不会怎么写代码,所以才没有制作游戏结束

如果有哪位大佬知道怎么碰撞,并且可以让游戏结束进程,请在评论区告诉我,我们一起学习!

你可能感兴趣的:(游戏编程(UE,Unity),unity,游戏,游戏引擎)