- Home /
Question by
laurienash · Jun 19, 2019 at 09:21 PM ·
unity 5renderertrailrendererbasictrail renderer
Trail Renderer Fade Out on Button Press
Hi everyone,
I've added a Trail Renderer Component to a GameObject in my scene. The GameObject remains static, but when the player controller moves I create a trail that's the same length as the distance the player controller has moved.
I want the trail to not fade out until a button has been pressed. Once the button has been pressed - I would like to fade the trail out to zero. (preferably with a customisable speed).
Does anyone have an idea of how to go about this? I'm not sure if setting the Time to a huge number and then setting it to zero is a good idea or not?
I've added my script so far below, though not really needed for the question!
Thanks, Laurien
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ObjectTrailRenderer : MonoBehaviour
{
public MyController playerController;
TrailRenderer lightTrailRenderer;
Vector3 lightTrailRendererPos;
public Renderer objectRenderer;
public Camera mainCamera;
bool isReset = false;
private void Start()
{
lightTrailRenderer = GetComponent<TrailRenderer>();
lightTrailRendererPos = transform.position;
lastPos = playerController.transform.position.x;
initialTrailPos = transform.position.x;
trailDistance = initialTrailPos;
}
float initialTrailPos;
float distanceTravelled = 0;
float lastPos;
float newPos;
float trailDistance;
public float speed = 2.0f;
public Vector3 direction = Vector3.right;
void Update()
{
if (objectRenderer.IsVisibleFrom(mainCamera))
{
newPos = playerController.transform.position.x;
distanceTravelled = newPos - lastPos;
isReset = false;
if (distanceTravelled > 0)
{
trailDistance += distanceTravelled;
lightTrailRenderer.AddPosition(new Vector3(trailDistance, lightTrailRendererPos.y, lightTrailRendererPos.z));
lastPos = newPos;
}
else if (distanceTravelled < 0)
{
trailDistance += distanceTravelled;
lightTrailRenderer.AddPosition(new Vector3(trailDistance, lightTrailRendererPos.y, lightTrailRendererPos.z));
lastPos = newPos;
}
}
if (!objectRenderer.IsVisibleFrom(mainCamera) & isReset == false)
{
isReset = true;
lightTrailRenderer.SetPosition((lightTrailRenderer.positionCount - 1), new Vector3(initialTrailPos, lightTrailRendererPos.y, lightTrailRendererPos.z));
trailDistance = initialTrailPos;
lightTrailRenderer.Clear();
}
}
}
Comment