我有一个像水果忍者这样的游戏,其中一个刀片跟随您的手指,一个儿童步伐渲染器将跟随。
这在编辑器中工作正常,但是当我构建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;
}
}
正如我所说,这在编辑器中工作正常,仅在电话上即可。我有什么办法可以解决这个问题?
答案 0 :(得分:0)
仔细考虑时,任何动作都只是每一帧的微小传送。通过这种逻辑,尾迹渲染器必须基于这种运动。尾迹渲染器如何分辨大型传送和小型传送之间的区别?可能不会。
因此,如果要显式传送对象,请禁用其轨迹渲染,将其传送,然后重新启用它。应该可以。
答案 1 :(得分:0)
您可以在传送前使用 TrailRenderer.emitting = false
停止跟踪,然后将其设置为 true。
只需检查新旧位置之间的差异是否:
if(distance > notmalMovingDistance)
myTrail.emitting = false;
else
myTrail.emitting = true;