1.11 从0开始学习Unity游戏开发--移动你的相机

本文介绍如何在Unity中利用WASD键移动相机,通过 Axis 输入控制,解决移动速度问题,并探讨组件如何访问和控制场景内的其他物体,包括相机对象。文章还讨论了游戏开发中的性能优化和引用其他物体的注意事项。
摘要由CSDN通过智能技术生成

上一篇文章介绍了如何在Unity中接收用户的输入,由于需要兼容各个设备的差异,Unity做了一套封装,初用起来可能会比较绕,本篇我们就直接用起来,我们会利用wasd来移动我们的游戏内的视线,有点类似FPS游戏里面的操作效果,同时我们也会学习如何让我们的代码控制场景内的物体,而非只是控制组件自己所在的物体。

组件接收WASD输入

我们新建一个代码资源文件叫CameraController:

using UnityEngine;

public class CameraController : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKey(KeyCode.W))
        {
            // Move camera forward
        }
        if (Input.GetKey(KeyCode.A))
        {
            // Move camera left
        }
        if (Input.GetKey(KeyCode.S))
        {
            // Move camera backward
        }
        if (Input.GetKey(KeyCode.D))
        {
            // Move camera right
        }
    }
}

可以看到我们用上一篇讲的Input类来获取当前用户按下了什么按键,但是我们也说了,如果我们不是用的键盘,如果是手柄呢?那么我们最好还是使用Axis信息来代表类似移动输入的信息,我们让GPT简单帮我改改代码:

using UnityEngine;

public class CameraController : MonoBehaviour
{
    void Update()
    {
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
    }
}

"Horizontal"和"Vertical"都是可以从InputManager配置文件里面找到对应的配置名的,很明显这两个分别代表水平和竖直方向上的输入量,float取值范围是[-1, 1]。

但是细心的人真的会看到InputManager里面针对这两个输入并没有配置具体是键盘上的哪个按键,怎么就一定会是WASD呢,那只能说是Unity的潜规则,可以从文档中了解到:

To read an axis use Input.GetAxiswith one of the following default axes: "Horizontal" and "Vertical" are mapped to joystick,A,W,S,Dand the arrow keys. "Mouse X" and "Mouse Y" are mapped to the mouse delta. "Fire1", "Fire2" "Fire3" are mapped toCtrl,Alt,Cmdkeys and three mouse or joystick buttons.

给相机加上我们的组件

现在我们是希望移动相机的位置,那么很显然我们需要修改相机的Transform组件的Position信息,我们先给相机加上我们自己的组件:

然后在我们的组件里面要访问同一个GameObject下的其他组件,那么我们可以直接使用GetComponent方法:

using UnityEngine;

public class CameraController : MonoBehaviour
{
    void Update()
    {
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");

        Transform transform = GetComponent<Transform>();
    }
}

然后修改组件里面的值:

using U
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值