【发布时间】:2014-08-19 08:17:59
【问题描述】:
我正在使用手机上的倾斜功能来控制物体左右滚动。我不希望它滚动任何超出屏幕宽度的东西。
如下图所示,虚线表示屏幕的宽度。 'O' 是对象,Max 符号表示允许对象滚动到的最大点。
最大--------O--------最大
但目前使用我的代码,该对象仍会滚出屏幕。还尝试测试高度和宽度,并在对象滚出屏幕时得到相同的结果。请指教我做错了什么。谢谢你。
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);
}
}
【问题讨论】:
-
什么是
transform?你的对象“O”? -
是的,变换就是对象。
-
我假设它存储了某种形式的坐标,所以你应该检查一下(例如
if (transform.x <0) transform.x = 0; else if(transform.x > Screen.width) transform.x = Screen.Width;) -
我根据您的建议更新了代码,但结果相同。做建议,以防我理解错了。 Tnks。
-
嗯,这里面的摄像头在哪里?