Hi, there. I’m still learning and have been struggling with Raycast. This is the fourth iteration of some code I’m using in an attempt to make a simple laser pointer. I want the laser to extend just a bit (rather than forever) and I want it to stop if it collides with anything. Pretty basic, I thought. I have the laser pointer working fine with Line Renderer. But when I add the Raycast code, it doesn’t point forward – it points at a weird downward angle. When I change this:
else
{
laserBeam.SetPosition(1, shootRay.origin + shootRay.direction * range);
to this:
else
{
laserBeam.SetPosition(1, transform.forward * 5000);
it points at the correct angle but extends forever – so I must be doing something wrong with the range. Is there a better way? Thanks for any suggestions!
Oh! I’m working in Unity 2018.3.3f1, in an iOS build.
public class beam : MonoBehaviour
{
public float range = 5f;
LineRenderer laserBeam;
RaycastHit laserHit;
Ray shootRay;
// Use this for initialization
void Start ()
{
laserBeam = GetComponent<LineRenderer>();
}
// Update is called once per frame
void Update ()
{
shootRay.origin = transform.position;
shootRay.direction = transform.forward;
if (Physics.Raycast(shootRay, out laserHit, range))
{
if(laserHit.collider)
{
laserBeam.SetPosition(1, laserHit.point);
}
}
else
{
laserBeam.SetPosition(1, shootRay.origin + shootRay.direction * range);
}
}
}