【问题标题】:Unity: camera falls through terrainUnity:相机穿过地形
【发布时间】:2013-11-21 08:30:03
【问题描述】:

问题是:

我已经创建了地形,我需要使用相机飞越地形。我添加到相机“鼠标注视”脚本,刚体:usegravity - 未选中,我在更新方法中添加了我的代码:

    float vert = Input.GetAxis("Vertical");
    float hor = Input.GetAxis("Horizontal");

    if (vert != 0)
    {
        if (!Physics.Raycast(this.transform.position, this.transform.forward, 5))
        {
            transform.Translate(Vector3.forward * flySpeed * vert);
        }
        else
        {
            transform.Translate(Vector3.up * flySpeed * vert);
        }
    }

    if (hor != 0)
    {   

        if (!Physics.Raycast(this.transform.position, this.transform.forward, 5))
        {
            transform.Translate(Vector3.right * flySpeed * hor);
        }
        else
        {
            transform.Translate(Vector3.up * flySpeed* hor);
        }
    }

    if (Input.GetKey(KeyCode.E))
    {
        transform.Translate(Vector3.up * flySpeed);            
    }
    else if (Input.GetKey(KeyCode.Q))
    {
        Vector3 v = Vector3.down * flySpeed;

        if (!Physics.Raycast(this.transform.position, this.transform.forward, 5))
        {
            transform.Translate(v);
        }           
    }

但有时我会下降 - Q - 相机穿过地形。为什么? 如果您在地形上尽可能低地向前移动相机并且相机不会穿过它,那么它看起来也很丑 - 它开始跳跃。还有为什么?

【问题讨论】:

    标签: camera unity3d terrain


    【解决方案1】:

    确保您的地形上有Terrain Collider

    【讨论】:

      【解决方案2】:

      除了 S.Richmonds 的回答之外,您还可以将角色控制器或其他类似的碰撞组件对象添加到您的相机。

      在统一问题网络中查看此答案: http://answers.unity3d.com/questions/45763/getting-camera-to-not-see-under-the-ground.html

      【讨论】:

        【解决方案3】:

        单一行为中的 Update() 方法每帧调用一次。因为调用更新的速率取决于帧速率,所以在 Update() 中将对象移动一个常数值会导致运动不一致。这可以通过将恒定速度乘以 Time.deltaTime 来纠正,Time.deltaTime 是自上一帧渲染以来的秒数。除非 flySpeed 设置得太高(每帧的位置变化大于对撞机的大小),否则这将修复 fallthrough。此外,如上所述,使用没有刚体的 CharacterController 会更适合这种情况。 Rigidbody 用于主要由物理控制的对象,而 CharacterController 用于由脚本控制的对象。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-20
          • 1970-01-01
          • 2018-04-25
          相关资源
          最近更新 更多