文章

編寫簡單的物件移動腳本

要讓物件在Unity中移動,可以編寫一個簡單的C#腳本來控制它的移動。這個腳本可以使用玩家的輸入來移動物件,或讓物件自動移動。

1. 基於玩家輸入的物件移動腳本

這是一個基於玩家輸入的基本物件移動腳本。物件會根據玩家按下的方向鍵(W, A, S, D 或 上, 下, 左, 右)來移動。

腳本範例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using UnityEngine;

public class SimpleMovement : MonoBehaviour
{
    public float moveSpeed = 5f;  // 控制物件移動速度

    void Update()
    {
        // 取得玩家的輸入
        float moveX = Input.GetAxis("Horizontal");  // 左右移動 (A/D 或 左/右)
        float moveY = Input.GetAxis("Vertical");    // 上下移動 (W/S 或 上/下)

        // 計算移動方向
        Vector3 moveDirection = new Vector3(moveX, 0f, moveY);

        // 移動物件
        transform.Translate(moveDirection * moveSpeed * Time.deltaTime, Space.World);
    }
}

腳本說明

  • moveSpeed:控制物件的移動速度。可以在 Inspector 面板中調整這個值。
  • Input.GetAxis(“Horizontal”) 和 Input.GetAxis(“Vertical”):這兩行代碼用來檢測玩家的方向鍵輸入。它們分別對應左右(水平)和上下(垂直)方向的移動。
  • transform.Translate:這是用來移動物件的方法。它根據計算出的 moveDirectionmoveSpeed,每幀更新物件的位置。

2. 自動移動的物件腳本

如果你想要讓物件自動移動,可以使用一個更簡單的腳本,讓物件以固定速度沿著某個方向移動。

腳本範例

1
2
3
4
5
6
7
8
9
10
11
12
13
using UnityEngine;

public class AutoMovement : MonoBehaviour
{
    public float moveSpeed = 5f;  // 控制物件移動速度
    public Vector3 moveDirection = Vector3.forward;  // 移動方向

    void Update()
    {
        // 移動物件
        transform.Translate(moveDirection * moveSpeed * Time.deltaTime, Space.World);
    }
}

腳本說明

  • moveDirection:這個 Vector3 變數定義了物件的移動方向。默認情況下,物件會沿著世界座標系中的 Z 軸(前方)移動。
  • Space.World:這個參數確保物件根據世界座標系移動,而不是本地座標系。

3. 將腳本附加到物件並測試

  1. 創建一個新的C#腳本
    • 按照之前介紹的步驟,創建一個新的C#腳本,並將上面的代碼複製到其中。
    • 為腳本命名為 SimpleMovementAutoMovement
  2. 將腳本附加到物件
    • Hierarchy 視圖中,選擇你想要移動的遊戲物體(例如一個立方體或球體)。
    • 將腳本從 Project 視圖中拖放到 Inspector 面板中,附加到選中的遊戲物體上。
  3. 調整參數並運行遊戲
    • Inspector 面板中,可以調整 moveSpeedmoveDirection 來測試不同的移動效果。
    • 運行遊戲,觀察物件根據玩家輸入或自動移動。

小結

這些簡單的移動腳本展示了如何控制物件的基本移動行為。你可以根據需要進一步擴展這些腳本,例如加入跳躍、碰撞檢測、或者更複雜的路徑跟隨邏輯。這些基礎概念將幫助你創建更加動態和互動的遊戲體驗。

本文章以 CC BY 4.0 授權