Unity百游修炼(6)——基于(5)虚拟轴的使用

最终效果:

虚拟轴的使用


前言:

        在 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.结语

        学习过程中有任何疑问,比如对某段代码不理解,或者在实际操作中遇到了问题,都可以随时跟我说,我会为你解答。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值