【问题标题】:Unity3D Camera jittering when dragging拖动时Unity3D相机抖动
【发布时间】:2015-08-16 14:26:10
【问题描述】:

我正在制作一款游戏,我希望能够在其中拖动相机穿过场景。我写了以下代码:

// When dragging
    if(TouchDetection.TouchDragging && IntroBusy == false)
    {
        if(DragActive == false)
        {
            DragStartPos = TouchDetection.TouchPositionWP;
            CameraStartPos = Camera.main.transform.position;
            DragActive = true;
            CameraFollowingPlayer = false;
        }

        Vector2 Temp = TouchDetection.TouchPositionWP - DragStartPos;
        Camera.main.transform.position = CameraStartPos - new Vector3(Temp.x, Temp.y, 0);
    }
    if(TouchDetection.TouchDragging == false)
    {
        DragActive = false;
    }

但是,在拖动过程中,相机确实会移动,但在移动时会有抖动。拖得越远,抖动就越大。

我花了几个小时寻找问题,但仍然没有找到任何解决方案。

【问题讨论】:

    标签: unity3d camera


    【解决方案1】:

    几点
    1.在LateUpdate而不是在更新中移动相机是一个很好的做法。这允许相机在所有物体移动后进行渲染。
    2.不要直接设置Transform.position,而是使用Vector3.MoveTowardsVector3.Lerp来设置你的相机位置。

    【讨论】:

      【解决方案2】:

      我解决了。

      我正在计算世界坐标中的触摸位置。每当屏幕移动时,即使您没有拖动鼠标/手指,触摸位置也会在世界坐标中移动。

      现在我使用屏幕坐标中的触摸位置进行计算,当相机移动时,触摸位置不会改变。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多