【问题标题】:Keeping my object from rolling out of the screen防止我的对象滚出屏幕
【发布时间】: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 &lt;0) transform.x = 0; else if(transform.x &gt; Screen.width) transform.x = Screen.Width;)
  • 我根据您的建议更新了代码,但结果相同。做建议,以防我理解错了。 Tnks。
  • 嗯,这里面的摄像头在哪里?

标签: c# unity3d


【解决方案1】:

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

首先,如果您使用的是 2d 相机,您可以使用类似的方法

leftBounds = Camera.x - (Camera.pixelWidth/2);

但是,由于正交摄像机角度在距摄像机 x 距离处未设置为任何特定大小,因此难以计算。

我已经看到一些实例是在渲染区域之外的相机上的 coliders 被放置为相机子项

最好添加一个仅影响适当的游戏对象的 colision 掩码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    相关资源
    最近更新 更多