【问题标题】:Smooth Camera Controles like in Subway Surfer Game?像地铁冲浪游戏一样流畅的相机控制?
【发布时间】:2019-09-17 08:28:45
【问题描述】:

我正在实现一个像地铁冲浪者这样的游戏,但在游戏中我也有转弯。所以我的问题是如何像地铁冲浪游戏那样流畅地跟随玩家?

Transform mTransform;

Vector3 currentPos;

Quaternion rot;

public static float XOffSet = 0.2f;

private void LateUpdate()
{

       float targetX = -playerScript.targetXOffset * 0.2f;
        offsetPosition.x = Mathf.Lerp(offsetPosition.x, targetX, xDamping * Time.deltaTime);

        Vector3 wantedPos = player_.TransformPoint(offsetPosition);

        wantedPos.y = Mathf.Lerp(mTransform.position.y, wantedPos.y, playerScript.camHeightDamping * Time.deltaTime);

        mTransform.position = wantedPos;

        Quaternion rot_ = Quaternion.Slerp(mTransform.localRotation, player_.localRotation, Time.deltaTime * xDamping);

        mTransform.localRotation = rot_;

        mTransform.localEulerAngles = new Vector3(14, mTransform.localEulerAngles.y, 0);  

}

上面的代码工作得很好,但是我感觉它在跟随的时候并不流畅;感觉有点生涩。如何改进我的代码。

【问题讨论】:

    标签: c# unity3d camera


    【解决方案1】:

    我更喜欢使用 Tweening 插件,比如 DOTween “它是免费的”,你可以像这样做一些非常简单的事情:

    Mainplayer.Transform.DOMoveY(float value, float time);
    

    在这个例子中,它将在给定的时间内沿 Y 轴以一定的值移动玩家。其他轴也一样

    Mainplayer.Transform.DOMoveX(float value, float time);
    Mainplayer.Transform.DoMoveZ(float value, float time);
    

    不只是这样,即使是旋转,你也可以做 DORotateX...等,也可以使用 felxable 函数来帮助你从一个点到另一个点控制玩家或任何物体

    更正确地说,补间意味着在两个值之间进行调整,只要它们受支持,从向量、浮点数、颜色......等等

    【讨论】:

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