我正在使用 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:
我不会同时使用两条线。
你能找出问题吗?
MMMHUHU
相关分类