我正在使用 Unity 制作 3D 游戏,并将使用Z, Q, S,D键(我使用 Azerty 键盘)和鼠标滚轮来四处移动相机以进行缩放。该escape键将切换相机的移动。我会让我的相机保持在最小和最大区域内。为此,我使用了两个变量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 }}问题是当我使用按键移动相机时。我已经尝试了两行不同的代码,但都不能像方面那样工作。这是我的问题。用我上面代码的注释行。第一行忽略最小值和最大值。第二行设置相机(0, 10, 0.4970074)在移动时始终开启。我按下后是这样的Q:我不会同时使用两条线。你能找出问题吗?
1 回答
MMMHUHU
TA贡献1834条经验 获得超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 关注
- 140 浏览
添加回答
举报
0/150
提交
取消