編寫簡單的物件移動腳本
要讓物件在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:這是用來移動物件的方法。它根據計算出的
moveDirection
和moveSpeed
,每幀更新物件的位置。
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. 將腳本附加到物件並測試
- 創建一個新的C#腳本:
- 按照之前介紹的步驟,創建一個新的C#腳本,並將上面的代碼複製到其中。
- 為腳本命名為
SimpleMovement
或AutoMovement
。
- 將腳本附加到物件:
- 在
Hierarchy
視圖中,選擇你想要移動的遊戲物體(例如一個立方體或球體)。 - 將腳本從
Project
視圖中拖放到Inspector
面板中,附加到選中的遊戲物體上。
- 在
- 調整參數並運行遊戲:
- 在
Inspector
面板中,可以調整moveSpeed
和moveDirection
來測試不同的移動效果。 - 運行遊戲,觀察物件根據玩家輸入或自動移動。
- 在
小結
這些簡單的移動腳本展示了如何控制物件的基本移動行為。你可以根據需要進一步擴展這些腳本,例如加入跳躍、碰撞檢測、或者更複雜的路徑跟隨邏輯。這些基礎概念將幫助你創建更加動態和互動的遊戲體驗。
本文章以 CC BY 4.0 授權