传送时,路径渲染器将离开路径

时间:2018-06-23 20:35:22

标签: c# unity3d

我有一个像水果忍者这样的游戏,其中一个刀片跟随您的手指,一个儿童步伐渲染器将跟随。

这在编辑器中工作正常,但是当我构建apk并在手机上播放时,它会从最后一点传送出去。因此,如果我在左上角移动,请举起手指并将其放在右下角,您会看到一条细的快速对角线。

这是我的代码:

private void Update()
{
    if (Event.current == null || (Event.current != null && EventSystem.current.currentSelectedGameObject == null))
    {
        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
        {
            circleCollider.enabled = false;
            currentTrail = Instantiate(trail, transform);
            isCutting = true;
        }
        else if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Ended)
        {
            circleCollider.enabled = false;
            currentTrail.transform.SetParent(null);
            Destroy(currentTrail, 2f);
            isCutting = false;
        }
    }

if (isCutting)
    {
        Vector2 newPos = currentTrail.transform.position = rb.position = cam.ScreenToWorldPoint(Input.mousePosition);

        float velocity = (newPos - previousPos).magnitude * Time.deltaTime;
        if (velocity > minCuttingVelocity)
        {
            circleCollider.enabled = true;
            canCut = true;
        } else {
            circleCollider.enabled = false;
            canCut = false;
        }

        previousPos = newPos;
    }
}

正如我所说,这在编辑器中工作正常,仅在电话上即可。我有什么办法可以解决这个问题?

2 个答案:

答案 0 :(得分:0)

仔细考虑时,任何动作都只是每一帧的微小传送。通过这种逻辑,尾迹渲染器必须基于这种运动。尾迹渲染器如何分辨大型传送和小型传送之间的区别?可能不会。

因此,如果要显式传送对象,请禁用其轨迹渲染,将其传送,然后重新启用它。应该可以。

答案 1 :(得分:0)

您可以在传送前使用 TrailRenderer.emitting = false 停止跟踪,然后将其设置为 true。

只需检查新旧位置之间的差异是否:

if(distance > notmalMovingDistance)
    myTrail.emitting = false;
else
    myTrail.emitting = true;