【问题标题】:unity smooth 2D horizontal transformunity 平滑 2D 水平变换
【发布时间】:2018-11-20 20:46:34
【问题描述】:

目前,我有一个移动脚本,它只是在屏幕上有一个球,当你触摸球的左侧时,它会向左移动,当你触摸它的右侧时,它会向右移动。但是,当它移动时,它并不平滑,除非我将浮动降低到它移动了多少(这会导致它太慢)。如何在运动流畅的同时保持快速的平移速度?

if (Input.touchCount > 0)
    {
        Touch touch = Input.GetTouch(0);

        var point = Camera.main.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y,
            transform.position.z - Camera.main.transform.position.z));

        float dx = point.x - transform.position.x;
        if (point.x < transform.position.x)
        {
            //transform.Translate(-15f * Time.deltaTime, 0, 0);

            transform.Translate (dx * (1 - Mathf.Pow (0.5f, Time.deltaTime / halfWayTime)), 0, 0);


        }
        else if (point.x >= transform.position.x + 0.5f)
        {
            //transform.Translate(15f * Time.deltaTime, 0, 0);
            transform.Translate (dx * (1 - Mathf.Pow (0.5f, Time.deltaTime / halfWayTime)), 0, 0);
        }
    }

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:
    float targetX;
    const float halfWayTime = 0.1f;
    
    void Update () {
        float dx = targetX - transform.position.x;
        transform.Translate (dx * (1 - Mathf.Pow (0.5f, Time.deltaTime / halfWayTime), 0, 0);
    }
    

    这会创建一个开始快,但最终变慢的运动模式,并且可以随时编辑 targetX。 halfWayTime 是物体完成一半路径到目标的时间,如果是 0.1,那么在 0.1s 内它将移动初始距离的 50%,0.2s - 75%,0.3s - 87.5%等等。

    顺便说一句,您可以修改此代码以使用所有坐标:

    void Update () {
        transform.position = Vector3.Lerp (
            target,
            transform.position,
            Mathf.Pow (0.5f, Time.deltaTime / halfWayTime)
        );
    }
    

    【讨论】:

    • 这很好用,但仅沿负 x 轴,在正方向上似乎跳跃了很多。知道为什么>
    • 它应该以相同的方式在两个方向上工作。 @Mattattack,您是否以某种方式将此代码更改为相反的方向?如果是,你不应该。并请说出你是如何设置targetX的,也许它就在那里
    • 对于 targetX,我计算出用户手指触摸的点,然后相对于世界而不是屏幕进行计算,我知道这很好用。我没有更改其他方向的代码。我将更新我的问题以显示新代码。
    • 简单地删除不必要的 if 语句似乎让它工作了!感谢大家的帮助!
    猜你喜欢
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    相关资源
    最近更新 更多