我正在开发侧滚动2D平台游戏,我有一会儿在背景中有一个焦点,我想向玩家展示一个“ aw”时刻,并且我想缩小相机显示该时刻,然后再次放大。我想您可以说,当他们要显示的对象对于相机的大小来说太大时,可以像《死亡的甘比特》或《空心骑士》一样做。
试图从某个区域的玩家那里获得变换,并计算到我希望相机尺寸达到最大的点的距离,然后从中计算出一个百分比,以乘以尺寸差会破坏视口,使视口变亮或缩小到允许的最大单位。
预期结果是使相机缩小到世界上某个点的距离,超过该点将停止缩小,向后移动应使用初始OrtographicSize放大到播放器。
谢谢您的帮助!
答案 0 :(得分:0)
您可以这样做:
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);
}
在此解决方案中,minOrthographicSize
仅在Target1
和Target2
处于相同位置时才能发生,以进行更改以实现:
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);
}
在此解决方案中,对于minOrthographicSize
距离,正交大小将为minOrhtographicDistance
,然后根据目标之间的距离而改变。