簡體   English   中英

傳送時軌跡渲染器會留下軌跡

[英]Trail renderer is leaving a trail when teleporting

我有一個像水果忍者這樣的游戲,其中刀片跟隨你的手指,而兒童軌跡渲染器將跟隨。

這在編輯器中工作正常,但是當我構建 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;
    }
}

正如我所說,這在編輯器中運行良好,它只是在電話上。 有什么辦法可以解決這個問題嗎?

仔細想想,在 unity 中,任何運動都只是每一幀的一個小傳送。 按照這個邏輯,軌跡渲染器必須基於這樣的運動。 軌跡渲染器如何區分大傳送和小傳送之間的區別? 應該不能吧

因此,如果您要顯式傳送對象,請禁用其軌跡渲染,傳送它,然后重新啟用它。 應該做的伎倆。

您可以在傳送前使用TrailRenderer.emitting = false停止跟蹤,然后將其設置為 true。

只需檢查新舊位置之間的差異是否:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM