- Home /
How would I do this with a line renderer...
Hi, I have a circle collider on a player with isTrigger set to true so whenever the player goes through other objects I need to have a line renderer spawned for how many objects are currently in the players circle collider. Then I have the line renderers attach themselves to those objects. Then they detach from the objects when they leave the circle collider without having more than one line renderer attached to the same object. Any ideas on how to do this? Appreciate any help :)
Answer by Casiell · Mar 11, 2019 at 07:20 PM
OnTriggerEnter spawn a line renderer on the object that entered the circle (or just create another object for that, doesn't matter). Then set line renderer first position to that object position and last position to whenever you want (probably player)
OnTriggerExit destroy that line renderer
Here's an example of what I already tried (unfortunately, the line renderers keep attaching to the same objects):
public GameObject electricityObject;
public CircleCollider2D radiusCollider;
public Layer$$anonymous$$ask electricityHitLayer;
private GameObject spawnedElectricityObject;
void Update()
{
Debug.Log(spawnedElectricityObject);
spawnedElectricityObject.GetComponent<LineRenderer>().SetPosition(0, transform.position);
}
HashSet<GameObject> collided = new HashSet<GameObject>();
void OnTriggerEnter2D(Collider2D collision)
{
collided.Add(collision.gameObject);
if (collision.IsTouchingLayers(electricityHitLayer) == true && collided.Contains(collision.gameObject))
{
for (int i = 0; i < collided.Count; i++)
{
Instantiate(spawnedElectricityObject = electricityObject, transform.position, Quaternion.identity);
spawnedElectricityObject.transform.parent = transform;
spawnedElectricityObject.GetComponent<LineRenderer>().SetPosition(0, transform.position);
spawnedElectricityObject.GetComponent<LineRenderer>().SetPosition(1, collided.);
}
}
}
void OnTriggerExit2D(Collider2D collision)
{
if (collision.IsTouchingLayers(electricityHitLayer) == false)
{
collided.Remove(collision.gameObject);
Destroy(spawnedElectricityObject);
spawnedElectricityObject.SetActive(false);
}
}