Question by
pururu08 · Mar 03, 2016 at 12:54 AM ·
linerendererraycasthit2dreflectionslaserlaser beam
Problem with Reflecting Laser (RaycastHit2D and Line Renderer)
i have problem with loop when im try to keep the laser reflecting when its point still hit mirror, i try using a recursive. or maybe someone can help me how to do this mechanism? what should i do with the laser to keep it reflecting when it is hit mirror?
using UnityEngine;
using System.Collections;
public class Laser : MonoBehaviour {
private LineRenderer linerenderer;
private RaycastHit2D hit;
private int vertCount;
// Use this for initialization
void Start () {
linerenderer = GetComponent<LineRenderer>();
vertCount = 2;
}
// Update is called once per frame
void Update () {
hit = Physics2D.Raycast(transform.position, transform.right);
linerenderer.SetVertexCount(vertCount);
linerenderer.SetPosition(0, transform.position);
linerenderer.SetPosition(1, hit.point);
if(hit.collider.gameObject.layer == 8)
{
Reflecting(hit, transform.position);
}
vertCount = 2;
}
void Reflecting(RaycastHit2D oldHit, Vector3 position)
{
Vector2 dir = Vector2.Reflect((oldHit.point - (Vector2)transform.position).normalized, oldHit.normal);
RaycastHit2D nextHit = Physics2D.Raycast(oldHit.point, dir);
vertCount++;
linerenderer.SetVertexCount(vertCount);
linerenderer.SetPosition(vertCount - 1, nextHit.point);
Debug.Log(vertCount);
if (nextHit.collider.gameObject.layer == 8)
{
Reflecting(nextHit, oldHit.point);
}
}
}
Comment