Как сделать так, чтобы рендерер следа не зависел от движения оси Z в Unity 3D?

Я делал 3D-игру, и я сделал входной коллектор с компонентом рендеринга следов. Когда есть движение z action, рендерер трейлера показывает некоторые эффекты движения вперед.

Есть ли способ заставить рендеринг следа показывать только определенное движение оси?

1 ответ

Решение

Лучший способ, о котором я могу подумать, - это создать отдельный объект с трейлом и переместить его в положение объекта, на котором вы хотите провести трейл, до начала рендеринга, а затем, после пост-рендеринга, сбросить его позицию Z. Как это:

[RequireComponent(typeof(TrailRenderer))]
public class ZLimitedTrail : MonoBehaviour {
    public Transform target;        

    private void Start() {
        Camera.onPreRender += SetPosition;
        Camera.onPostRender += ResetZPosition;
    }

    private void SetPosition() {
        // move it to where it should show
        this.transform.position = target.position;
    }

    private void ResetZPosition() {
        // reset Z position to 0
        this.transform.position = 
            new Vector3(this.transform.position.x, this.transform.position.y, 0);
    }
}

Я не проверял это, поэтому дайте мне знать, если это работает.

Другие вопросы по тегам