在Unity中限制加速器移动区域

时间:2018-10-02 00:34:14

标签: c# unity3d accelerometer

void Update(){
    float accel = Input.acceleration.x;
    transform.Translate(accel, 0, 0);
}

以上是我当前游戏中加速器控制的代码。我希望能够向左和向右倾斜手机,并且角色将左右移动。该代码工作正常,但角色移到屏幕外。我尝试对Accel值进行Mathf.Clamp尝试,也尝试对transform.position进行钳制,但均无济于事,似乎只是改变了加速度计控件的速度。

我需要一种方法来动态限制字符在任何屏幕尺寸内的移动。

2 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,则希望将物体固定在可见区域内。为此,您可以使用视口。

Vector3 pos = this.transform.position;
Vector3 viewportPos = Camera.main.WorldToViewportPoint(pos);
if (viewportPos.x < 0f) Camera.main.ViewportToWorldPoint(new Vector3(0f, pos.y, pos.z));
else if (viewportPos.x > 1f) Camera.main.ViewportToWorldPoint(new Vector3(1f, pos.y, pos.z));

答案 1 :(得分:0)

Maybe you could set colliders as triggers alongside the track and set accel variable to 0 if the object is touching the trigger