Unity2D 摄像机按玩家到对象的距离缩小,当对象变远时放大



我正在开发一款横向卷轴 2D 平台游戏,我有一个时刻,背景中有一个焦点,我想向玩家展示一个"aw"时刻,我想缩小摄像机以显示该时刻,然后再次放大。我想你可以说做同样的事情,就像死亡的赌局或空心骑士一样,当他们想要展示的对象对于相机的大小来说太大时。

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

预期结果是使摄像机缩小到世界中某个点的距离,通过该点它停止缩小,向后应放大到具有初始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);
}

在此解决方案中,正交大小将minOrthographicSizeminOrhtographicDistance距离,然后根据目标之间的距离而变化。

最新更新