最终效果:
虚拟轴的使用
前言:
在 Unity 游戏开发过程中,实现角色的移动控制以及摄像机的跟随效果是基础且关键的环节。通过合理利用虚拟轴、导入合适的资源,并编写相应的控制脚本,我们能够轻松达成这些功能。接下来,让我们逐步深入学习具体的操作流程。
资源:
地图资源见上期博文:Unity百游修炼(5)——搭建像素游戏场景详细制作全流程-CSDN博客
角色资源:Easy Primitive People | 3D 角色 | Unity Asset Store
1.虚拟轴是什么
虚拟轴是 Unity 引擎中用于处理输入的一种机制。它允许我们通过各种输入设备(如键盘、手柄等)来控制游戏对象的行为,比如移动、旋转等。通过设置虚拟轴,我们可以将不同输入设备的输入映射到统一的控制逻辑上,从而实现更加灵活和通用的控制方式。例如,在本项目中,我们将利用虚拟轴来实现角色的前后左右移动。
2.下载并导入角色资源
(1)下载资源
我们需要前往 Unity Asset Store 官网。在搜索栏中输入 “Easy Primitive People”,找到对应的角色资源包。点击进入资源详情页面后,点击 “Download” 按钮开始下载资源包。下载完成后,将资源包保存到本地合适的文件夹中,以便后续导入 Unity 项目。
(2)导入资源
在菜单栏中选择 “Assets” -> “Import Package” -> “Custom Package”。在弹出的文件浏览器中,找到刚才下载的 “Easy Primitive People” 资源包文件并选中,然后点击 “Open”。Unity 会弹出一个导入窗口,展示资源包中的所有文件和文件夹。我们可以根据项目需求勾选需要导入的内容,一般情况下保持默认勾选即可,然后点击 “Import” 按钮。
(3)在prefab中随便挑选一个角色(我选的是圣诞老人)
导入资源后,在项目面板中找到 “Assets” -> “Easy Primitive People” -> “Prefabs” 文件夹。打开该文件夹,我们可以看到里面包含了多个预制体角色。这些预制体已经包含了角色的模型、材质以及一些基本的设置。在众多预制体角色中,我选择了圣诞老人角色作为本项目中的可控角色。
3.编写角色控制脚本,使角色能移动
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player_Control : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
float xvalue=Input.GetAxisRaw("Horizontal");
float zvalue = Input.GetAxisRaw("Vertical");
Vector3 dir=new Vector3(-xvalue, 0, -zvalue);
if(dir!=Vector3.zero)
{
transform.rotation = Quaternion.LookRotation(dir);
transform.Translate(Vector3.forward * 2 * Time.deltaTime);
}
}
}
将上述脚本挂载到场景中的圣诞老人角色对象上。这样,当我们运行游戏时,就可以通过键盘的方向键来控制圣诞老人角色的移动和旋转了。水平方向的输入(如 A 和 D 键)控制角色的左右旋转,垂直方向的输入(如 W 和 S 键)控制角色的前后移动。
4.编写摄像机控制脚本进行摄像机跟随
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class camera_control : MonoBehaviour
{
private Vector3 offset;
private Transform player;
// Start is called before the first frame update
void Start()
{
player = GameObject.FindWithTag("player").transform;
offset = this.transform.position-player.transform.position;
}
// Update is called once per frame
void Update()
{
this.transform.position = offset+ player.transform.position;
}
}
在场景中创建一个摄像机对象,调整好其初始位置和角度。然后将上述摄像机控制脚本挂载到摄像机对象上。同时,确保场景中的圣诞老人角色对象的标签被设置为 “player”。这样,当游戏运行时,摄像机就会始终跟随圣诞老人角色移动,保持相对位置不变,为玩家提供良好的游戏视角。
5.结语
学习过程中有任何疑问,比如对某段代码不理解,或者在实际操作中遇到了问题,都可以随时跟我说,我会为你解答。