【发布时间】:2019-05-20 19:44:55
【问题描述】:
玩家控制摄像机移动以环顾关卡,我正在尝试设置边界,这样摄像机就不会走得太远。但是,当我添加了边界代码后,只要我按下按钮移动,相机就会飞走。
if (Input.GetKey("d"))
{
transform.Translate(new Vector2(camSpeed * Time.deltaTime, 0));
transform.position = new Vector2(Mathf.Clamp(transform.position.x, minX, maxX), 0);
}
if (Input.GetKey("a"))
{
transform.Translate(new Vector2(-camSpeed * Time.deltaTime, 0));
transform.position = new Vector2(Mathf.Clamp(transform.position.x, minX, maxX), 0);
}
if (Input.GetKey("w"))
{
transform.Translate(new Vector2(0, camSpeed * Time.deltaTime));
transform.position = new Vector2(0, Mathf.Clamp(transform.position.y, minY, maxY));
}
if (Input.GetKey("s"))
{
transform.Translate(new Vector2(0, -camSpeed * Time.deltaTime));
transform.position = new Vector2(0, Mathf.Clamp(transform.position.y, minY, maxY));
}
我已将最小值和最大值设置为高于所需级别,但无论设置为什么值,相机仍然会飞走。
【问题讨论】:
-
minY、maxY、minX和maxX的值是多少? -
@Ruzihm 无论价值是什么,它都会飞走。目前要对其进行测试,它们是 -1000 和 1000。
-
首先,你可能不应该在每个
if中设置transform.position = new Vector2(0, Mathf.Clamp(transform.position.y, minY, maxY));,只在最后设置一次。按照现在的方式,每次移动 Y 位置时,您都会将 X 位置设置为 0,反之亦然。 -
@FredrikSchön 我刚刚将它移出,现在它刚刚开始在不知名的地方。我也改成
transform.position = new Vector2(Mathf.Clamp(transform.position.x, minX, maxX), Mathf.Clamp(transform.position.y, minY, maxY)); -
是 2d 还是 3d?