Unity的C#編程教程_3_簡單移動控制

Simple Movement

  • 創建一個 player 對象,比如一個 3D Cube

  • 在對象上掛載腳本 PlayerMovement

  • 這裡我們將使用 transform.Translate() 方法

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    [SerializeField]
    private float _speed;
    // 雖然是 private,但是我們使用[SerializeField]讓其在 Inspector 可以編輯

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        // transform.Translate(Vector3.right);
        // 讓對象一直往右移動,默認是 1 米/幀的速度,每秒 60 幀,那就是60米/秒
        // transform.Translate(Vector3.right * Time.deltaTime);
        // 乘上一個時間修正,就可以移動 1 米/秒了
        transform.Translate(Vector3.right * _speed * Time.deltaTime );
        // 指定速度移動
        // 這裡 Vector3.right = new Vector3(1,0,0)
        // 所以速度設定為 5 的話:
        // new Vector3(1,0,0) * 5 * 真實時間修正
        // (-1,0,0) 代表 left
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    [SerializeField]
    private float _speed;
    // 雖然是 private,但是我們使用[SerializeField]讓其在 Inspector 可以編輯

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        float horizontalIput = Input.GetAxis("Horizontal");
        // 取得水平方向上的按鍵輸入 a為 0~-1,d為0~1,浮點數
        transform.Translate(new Vector3(horizontalIput,0,0) * _speed * Time.deltaTime );
        // 得到的基礎速度是水平方向 -1~1
    }
}
  • 在實際編程中,我們不希望進行 hard code,不希望把代碼寫死了

  • 比如移動,我們希望通過鍵盤輸入去控制,而不是讓一個物體一直往一個方向移動

  • 查看 Edit——Project Settings——Input Manager——Axes

  • 查看 Horizontal 和 Vertical 兩個標籤下面

  • 可以看到 a 和 d 按鍵分別對應着 Horizontal 的 Positive 和 Negative,即向右和向左

Tags: