Unity 使用 Input Manager 筆記(Old Input System)


建立時間: 2023年7月15日 13:05
更新時間: 2024年2月16日 08:16

說明

Input Manager 主要是透過輸入來控制角色移動,可以是鍵盤上下左右鍵,也可以是 WASD 鍵,或者是搖桿控制等等,本篇將分享 Input Manager 使用技巧。

新舊系統區分

Input Manager 有新系統和舊系統。

舊系統介紹


位置

Input Manager 在選單 > Edit > Project Settings… > Input Manager

Horizontal 和 Vertical

在 Axes 裡面有兩組 Horizontal 和 Vertical,主要區別在類型不同,一組是用來控制鍵盤滑鼠,另一組是用來控制搖桿。

two couple of Horizontal and Vertical

比較常用的選項說明

Horizontal

  • Name: Input Manager API 識別名稱
  • Negative Button: 左鍵
  • Positive Button: 右鍵
  • Alt Negative Button: 替代左鍵
  • Alt Positive Button: 替代右鍵
  • Type: 類型

Vertical

  • Name: Input Manager API 識別名稱
  • Negative Button: 下鍵
  • Positive Button: 上鍵
  • Alt Negative Button: 替代下鍵
  • Alt Positive Button: 替代上鍵
  • Type: 類型

模擬開車移動範例

Driver.cs

using UnityEngine;

/// <summary>
/// 駕駛腳本
/// </summary>
public class Driver : MonoBehaviour
{
    /// <summary>
    /// 移動速度
    /// </summary>
    [SerializeField]
    float moveSpeed = 0.01f;

    /// <summary>
    /// 轉向速度
    /// </summary>
    [SerializeField]
    float steerSpeed = 1f;

    void Update()
    {
        // 移動數
        float moveAmount = Input.GetAxis("Vertical") * moveSpeed * Time.deltaTime;
        // 轉向數
        float steerAmount = Input.GetAxis("Horizontal") * steerSpeed * Time.deltaTime;

        transform.Rotate(0, 0, -steerAmount);
        transform.Translate(0, moveAmount, 0);
    }
}

Input.GetAxis("Horizontal") 代表水平大小,按左鍵會慢慢遞減到-1,不按會慢慢歸0,按右鍵會慢慢遞增到1,transform.Rotate(0, 0, -steerAmount) 帶入負值 steerAmount,因為這位才能轉換成正確的轉向,也就是按左鍵會向左轉。

Input.GetAxis("Vertical") 同樣邏輯,代表垂直大小,按上鍵會慢慢遞增到1,下鍵會慢慢遞減到-1,不按會慢慢歸0。

Time.deltaTime 可以獲取從上一幀到當前幀所經過的時間(秒)。使用 Time.deltaTime 是為了確保遊戲在不同的硬體平台上以一致的速度運行,無論幀率(Frame Rate)是多少。

例如:一個每秒執行1次 Update(),和每秒執行10次 Update(),假設速度為 a,1秒後的變化如下:

Time.deltaTime:

1次: Time.deltaTime = 1;
10次: Time.deltaTime = 0.1;

移動距離:

1次: a x Time.deltaTime x 1 = a x 1 x 1 = a;
10次: a x Time.deltaTime x 10 = 10a x Time.deltaTime = 10a x 0.1 = a;

觀看次數: 1241
inputmanagermoveunity移動輸入管理
按讚追蹤 Enjoy 軟體 Facebook 粉絲專頁
每週分享資訊技術

一杯咖啡的力量,勝過千言萬語的感謝。

支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!