防止我的对象滚出屏幕

时间:2014-08-18 18:03:57

标签: c# unity3d

我正在使用手机上的倾斜功能来控制物体左右滚动。我不希望它超出屏幕宽度。

如下面的简单图示,虚线表示屏幕的宽度。 ' 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);
        }
    }

1 个答案:

答案 0 :(得分:0)

我认为有几种方法可以检查变性人的位置。

首先,如果你使用的是2d相机,你可以使用像

这样的方法
leftBounds = Camera.x - (Camera.pixelWidth/2);
然而,由于相机角度没有设置在距离相机x偏离的任何特定尺寸处,因此难以计算。

我已经看到一些实例是在渲染兰德外面的相机上的coliders被放置为相机儿童

添加一个colision mask只会影响合适的游戏对象,这是最好的。