Unity 使用 Input Manager 筆記(Old Input System)
分類
說明
Input Manager 主要是透過輸入來控制角色移動,可以是鍵盤上下左右鍵,也可以是 WASD 鍵,或者是搖桿控制等等,本篇將分享 Input Manager 使用技巧。
新舊系統區分
Input Manager 有新系統和舊系統。
舊系統介紹
位置
Input Manager 在選單 > Edit > Project Settings… > Input Manager
Horizontal 和 Vertical
在 Axes 裡面有兩組 Horizontal 和 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;
相關文章:
一杯咖啡的力量,勝過千言萬語的感謝。
支持我一杯咖啡,讓我繼續創作優質內容,與您分享更多知識與樂趣!