现在 我 正 试图 使 rts 相机 缩放 与 平移 时 , 接近 地面 。我 现在 的 问题 是 , 我 使用 鼠标 滚轮 缩放 , 它 使 缩放 感觉 像 它 的 滞后 。它 看 起来 像 是 跳跃 了 一些 Y 值 和 瞬间 移动 , 而 不是 平滑 地 移动 到 所 需 的 位置 。此外 , 我 还 想 知道 如何 使 相机 停止 在 最 小 Y 值 , 因为 现在 发生 的 是 , 它 停止 在 22 左右 , 而 不是 20 , 这 是 我 的 最 小 Y 值 的 相机 移动 。
我 试 着 在 我 的 numpad 上 用 + 和 - 缩放 , 它 按照 我 想 要 的 方式 工作 ( 平稳 地 放大 和 缩小 而 不 跳 过 ) , 但 并 不 是 所有 的 玩家 都 有 numpad , 我 觉得 用 鼠标 滚轮 缩放 更 合适 。
{
private const int levelArea = 100;
private const int scrollArea = 25;
private const int scrollSpeed = 25;
private const int dragSpeed = 70;
private const int zoomSpeed = 50;
// Maximum/minimum zoom distance from the ground
public int zoomMin = 20;
public int zoomMax = 120;
private const int panSpeed = 40;
// Minimal/maximal angles for camera
private const int panAngleMin = 30;
private const int panAngleMax = 90;
void Update()
{
// Init camera translation for this frame.
var translation = Vector3.zero;
// Zoom in or out
var zoomDelta = Input.GetAxis("Mouse ScrollWheel") * zoomSpeed * Time.deltaTime;
if (zoomDelta != 0)
{
translation -= Vector3.up * zoomSpeed * zoomDelta;
}
// Start panning camera if zooming in close to the ground or if just zooming out.
var pan = transform.eulerAngles.x - zoomDelta * panSpeed;
pan = Mathf.Clamp(pan, panAngleMin, panAngleMax);
// When to start panning up the camera
if (zoomDelta < 0 || transform.position.y < (zoomMax -20))
{
transform.eulerAngles = new Vector3(pan, 0, 0);
}
我希望从相机现在所在的位置到滚动进/出后所需的位置有一个平滑的过渡。我还想知道如何使相机停止在最小/最大变焦距离,而不是停止接近它。谢谢你的帮助。摄像机移动的视频:https://youtu.be/Lt3atJEaOjA
呼如林
HUH函数
慕莱坞森
随时随地看视频慕课网APP
相关分类