我正在使用 Unity 制作 3D 游戲,并將使用Z, Q, S,D鍵(我使用 Azerty 鍵盤)和鼠標滾輪來四處移動相機以進行縮放。該escape鍵將切換相機的移動。我會讓我的相機保持在最小和最大區(qū)域內(nèi)。為此,我使用了兩個變量min,max它們是Vector3. 這是 Unity 中的配置Main Camera:這是我的代碼:using UnityEngine;public class CameraController : MonoBehaviour{ [Header("Speeds")] public float panSpeed = 30; public float scrollSpeed = 5; [Header("Movement")] public bool doMovement = true; [Header("Min and max values")] public Vector3 min; public Vector3 max; private void Update() { if (Input.GetKey(KeyCode.Escape)) { doMovement = !doMovement; } if (doMovement) { if (Input.GetKey(KeyCode.Z)) { Move(Vector3.forward); } else if (Input.GetKey(KeyCode.S)) { Move(Vector3.back); } else if (Input.GetKey(KeyCode.Q)) { Move(Vector3.left); } else if (Input.GetKey(KeyCode.D)) { Move(Vector3.right); } float scroll = Input.GetAxis("Mouse ScrollWheel") * 1000; Vector3 pos = transform.position; pos.y -= scroll * scrollSpeed * Time.deltaTime; pos.y = Mathf.Clamp(pos.y, min.y, max.y); transform.position = pos; } } private void Move(Vector3 direction) { Vector3 pos = direction * panSpeed * Time.deltaTime; pos.x = Mathf.Clamp(pos.x, min.x, max.x); pos.z = Mathf.Clamp(pos.z, min.z, max.z); transform.Translate(pos, Space.World); // problem 1 transform.position = pos; // problem 2 }}問題是當我使用按鍵移動相機時。我已經(jīng)嘗試了兩行不同的代碼,但都不能像方面那樣工作。這是我的問題。用我上面代碼的注釋行。第一行忽略最小值和最大值。第二行設(shè)置相機(0, 10, 0.4970074)在移動時始終開啟。我按下后是這樣的Q:我不會同時使用兩條線。你能找出問題嗎?
1 回答

MMMHUHU
TA貢獻1834條經(jīng)驗 獲得超8個贊
第 1 行不起作用,因為transform.Translate它將沿矢量移動對象,而不是朝向某個位置。您的代碼正在以一定速度翻譯對象,并限制速度而不是位置。
第 2 行不起作用,因為將運動矢量分配給位置只會將相機移動到您的矢量值。
嘗試這個:
transform.Translate(direction * panSpeed * Time.deltaTime); // move object
Vector3 pos = transform.position; // get position as Vector
pos.x = Mathf.Clamp(pos.x, min.x, max.x); // clamp position
pos.z = Mathf.Clamp(pos.z, min.z, max.z);
transform.position = pos; // reassign clamped Vector to position
- 1 回答
- 0 關(guān)注
- 167 瀏覽
添加回答
舉報
0/150
提交
取消