我正在使用手机上的倾斜功能来控制物体左右滚动。我不希望它超出屏幕宽度。
如下面的简单图示,虚线表示屏幕的宽度。 ' O'是对象,Max符号表示允许对象滚动到的最大点。
Max -------- O -------- Max
但是目前使用我的代码,对象仍然会从屏幕上滚出来。还尝试测试高度n宽度,并在对象滚出屏幕时结果相同。请告诉我我做错了什么。谢谢。
public float speed = 10.0F;
void Update()
{
Vector3 dir = Vector3.zero;
dir.x = Input.acceleration.x;
if (dir.sqrMagnitude > 1)
dir.Normalize();
dir *= Time.deltaTime;
if (!(Mathf.Round(dir.x) > Mathf.Round(Screen.width/2)) || !(Mathf.Round(dir.x) < -Mathf.Round(Screen.width/2)))
{
transform.Translate(dir * speed);
}
}
**Updated
public float speed = 10.0F;
void Update()
{
Vector3 dir = Vector3.zero;
dir.x = Input.acceleration.x;
if (dir.sqrMagnitude > 1)
dir.Normalize();
dir *= Time.deltaTime;
//transform.Translate(dir * speed);
if (transform.position.x < 0)
{
transform.position = new Vector3(0, this.transform.position.y, this.transform.position.z);
}
else if (transform.position.x > Screen.width)
{
transform.position = new Vector3(Screen.width, this.transform.position.y, this.transform.position.z);
}
else
{
transform.Translate(dir * speed);
}
}
答案 0 :(得分:0)
我认为有几种方法可以检查变性人的位置。
首先,如果你使用的是2d相机,你可以使用像
这样的方法leftBounds = Camera.x - (Camera.pixelWidth/2);
然而,由于相机角度没有设置在距离相机x偏离的任何特定尺寸处,因此难以计算。
我已经看到一些实例是在渲染兰德外面的相机上的coliders被放置为相机儿童
添加一个colision mask只会影响合适的游戏对象,这是最好的。