上一节我们解决了材质显示不当的问题,接下来完成漫游的游戏逻辑。
开始之前,吐槽一下,个人笔记本电脑如果C盘预留空间不太够的话就不要玩大型场景了,最关键的是我电脑16G的内存被吃得满满的,死机了不知道多少次,不过总归是构建出了一个简单的项目,之后要修改的话大概是回学校用实验室里的工作站了,笔记本受不住啊!
本身是想做一个漫游游戏,那么就做第一人称吧,苦于Unity开启大场景后编译速度很慢,很难安心地调试,我用的VS又很吃内存,我干脆直接用了现成的资源。直接asset store搜索standard assets导入,使用了里面的FirstPersonController
。然后第一人称问题解决。
如果是想要和角色动画结合在一起的话,可以自己制作动画或者找现成的资源。这里推荐一个网站:https://www.mixamo.com/
该网站提供很多免费的角色,每个角色可以绑定许多动画,譬如静止不动、走、跑、跳等,比较适合动作不那么个性化的游戏制作。
然后我加了一点后期处理效果。这里没有自己写shader,而是用了asset store里的现成的包,搜索post-processing volume
,导入进来,找到PostProcessingBehaviour.cs
脚本,赋予自己的摄像机即可,这和我们在Unity Shader那里学过的一样,基于屏幕后处理。然后新建一个Post-Processing Profile,
里面提供了很多效果,可以满足大部分需求。
然后弄了一个GUI,加了一个Button,这是我的开始界面:
我的游戏界面:
其实就是到处逛。
主要脚本为,OnCameraSwitch
:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OnCameraSwitch : MonoBehaviour
{
public GameObject camera1;
public GameObject camera2;
public GameObject canvas;
// Start is called before the first frame update
void Start()
{
camera1.SetActive(true);
camera2.SetActive(false);
}
public void SwitchCamera()
{
camera1.SetActive(false);
camera2.SetActive(true);
canvas.SetActive(false);
}
}
就是按开始按钮后切换摄像机,屏蔽UI等。
然后让平行光随时间缓慢地转,为方便,加了个退出游戏的按钮:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LightChange : MonoBehaviour
{
public float speed = 0.1f;
// Update is called once per frame
void Update()
{
transform.Rotate(Vector3.right * speed * Time.deltaTime, Space.Self);
if (Input.GetKey("escape"))
Application.Quit();
}
}
项目github地址:https://github.com/Dragon-Baby/GTAClone
网友评论