C# 试图设置摄影机边界时,摄影机会飞离
玩家控制摄像机的移动来环视水平面,我试图设置边界,这样摄像机就不会走得太远。但是,当我添加边界代码时,每当我按下按钮移动时,相机就会飞离C# 试图设置摄影机边界时,摄影机会飞离,c#,unity3d,camera,C#,Unity3d,Camera,玩家控制摄像机的移动来环视水平面,我试图设置边界,这样摄像机就不会走得太远。但是,当我添加边界代码时,每当我按下按钮移动时,相机就会飞离 if (Input.GetKey("d")) { transform.Translate(new Vector2(camSpeed * Time.deltaTime, 0)); transform.position = new Vector2(Mathf.Clamp(transform.pos
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));
}
我已将“最小值”和“最大值”设置为高于所需水平的值,并且无论设置为什么值,相机仍会飞离。解释我的评论;不是每次使用W或S移动时都将x设置为0,而是应将夹紧移动到末端,夹紧x和y(可能保持Z值?):
您的
minY
、maxY
、minX
和maxX
的值是多少?@Ruzihm无论值是多少,它都会飞出。目前要测试它们是-1000和1000。首先,您可能不应该设置transform.position=newvector2(0,Mathf.Clamp(transform.position.y,minY,maxY))
在每个中,如果,只需在末尾执行一次即可。现在的方法,你每次移动Y位置时,都将X位置设置为0,反之亦然。我还将其更改为transform.position=newvector2(Mathf.Clamp(transform.position.x,minX,maxX),Mathf.Clamp(transform.position.y,minY,maxY))代码>是2d还是3d?这就解决了问题!非常感谢。
if (Input.GetKey("d"))
{
transform.Translate(new Vector2(camSpeed * Time.deltaTime, 0));
}
if (Input.GetKey("a"))
{
transform.Translate(new Vector2(-camSpeed * Time.deltaTime, 0));
}
if (Input.GetKey("w"))
{
transform.Translate(new Vector2(0, camSpeed * Time.deltaTime));
}
if (Input.GetKey("s"))
{
transform.Translate(new Vector2(0, -camSpeed * Time.deltaTime));
}
transform.position = new Vector3(
Mathf.Clamp(transform.position.x, minX, maxX),
Mathf.Clamp(transform.position.y, minY, maxY),
transform.position.z
);