Question by
unity_FTA6cO3XzCXQ0A · Apr 14, 2021 at 05:29 PM ·
raycastphysics2dreflectionraycasthit2dlaser
2D How to reflect a raycast with a line renderer
hi, I'm a beginner (sorry for my bad english), I've been looking for few hours to find a way to reflect a Raycast for a laser that reflects on certain surfaces. , I think I need vector2.reflect or something like that, but i don't really undertsand how it work ^^' , so does there is someone who can explain it to me? For now i have this
private LineRenderer lineRenderer;
public Transform LaserHit;
public bool isActive = true;
void Start()
{
lineRenderer = GetComponent<LineRenderer>();
lineRenderer.enabled = true;
lineRenderer.useWorldSpace = true;
}
void Update()
{
if (isActive)
{
RaycastHit2D hit = Physics2D.Raycast(transform.position, transform.up);
if (hit && hit.transform.tag == "Player" && isActive)
{
PlayerHealth playerHealth = hit.transform.GetComponent<PlayerHealth>();
playerHealth.TakeDamage(10);
StartCoroutine(laserHitWaitTime());
}
else if (hit.transform.tag == ("PF") )
{
// here the reflection effect
}
Debug.DrawLine(transform.position, hit.point);
LaserHit.position = hit.point;
lineRenderer.SetPosition(0, transform.position);
lineRenderer.SetPosition(1, LaserHit.position);
}
}
private IEnumerator laserHitWaitTime()
{
yield return new WaitForSeconds(0.3f);
lineRenderer.enabled = false;
lineRenderer.useWorldSpace = false;
isActive = false;
yield return new WaitForSeconds(3);
isActive = true;
lineRenderer.enabled = true;
lineRenderer.useWorldSpace = true;
}
sorry for my messy code I'm a beginner
capturepf.png
(12.1 kB)
Comment