Unity2D 相机根据玩家到物体的距离缩小,当它离得更远时放大

Unity2D camera zoom out by the distance of player to an object, Zoom in when it gets further away

我正在开发横向卷轴 2D 平台游戏,我有一段时间在背景中有一个焦点,我想在 "aw" 时刻向玩家展示,我想要缩小相机以显示那一刻,然后再次放大。我想你可以说当他们想要显示的对象对于相机的尺寸来说太大时,你可以像 Death's Gambit 或 hollow Knight 一样做同样的事情。

试图从某个区域的玩家那里获取变换并计算到我希望相机尺寸达到最大的点的距离,然后计算出它的百分比以乘以尺寸差异但它会破坏视口,使其变大或缩小到允许的最大统一度。

预期的结果是让相机缩小到世界上某个点的距离,通过该点它停止缩小,向后移动应该以初始 OrtographicSize 放大回玩家。

感谢您的帮助!

你可以这样做:

public Transform Target1;
public Transform Target2;

public float sensetivity = 1f;
public float maxOrthographicSize = 10f;

Camera thisCam;
float minOrthographicSize = 5f;

private void Start() {
    thisCam = GetComponent<Camera>();
    minOrthographicSize = thisCam.orthographicSize;
}
void Update()
{
    thisCam.orthographicSize = minOrthographicSize + Mathf.Clamp(Vector2.Distance(Target1.position, Target2.position) * sensetivity, 0f, maxOrthographicSize);
}

在此解决方案中,只有 Target1Target2 处于同一位置时才会发生 minOrthographicSize,要更改您可以执行的操作:

public Transform Target1;
public Transform Target2;

public float minOrhtographicDistance = 5f;
public float sensetivity = 1f;
public float maxOrthographicSize = 10f;

Camera thisCam;
float min = 5f;

private void Start() {
    thisCam = GetComponent<Camera>();
    min = thisCam.orthographicSize;
}
void Update()
{
    thisCam.orthographicSize = min + Mathf.Clamp((Vector2.Distance(Target1.position, Target2.position) - minOrhtographicDistance) * sensetivity, 0f, maxOrthographicSize);
}

在此解决方案中,minOrhtographicDistance 距离的正交尺寸将为 minOrthographicSize,然后会根据目标之间的距离而变化。