[英]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.