- Home /
Question by
EleKid6897 · Jan 03, 2019 at 08:30 PM ·
colliderraycastinglinerenderer
Raycast2D ignores gameobject
I have a line renderer that creates a 2d raycast between 2 points, and another gameobject between those two points that I want the raycast to detect. The gameobject is on the correct layer and has a collider, but the raycast refuses to hit the object. Here's my code; any help will be greatly appreciated.
void Start()
{
line = GetComponent<LineRenderer>();
//Find the selected points and get the distance between them.
Point1 = GameObject.Find("Point 1");
Point2 = GameObject.Find("Point 2");
RaycastDistance = Vector3.Distance(Point1.transform.position, Point2.transform.position);
//Tells the line renderer's color to equal the color of the points.
line.SetColors(Point1.GetComponent<SpriteRenderer>().color, Point2.GetComponent<SpriteRenderer>().color);
}
void FixedUpdate()
{
//Sets the points for the line renderer.
line.SetPosition(0, new Vector2(Point1.transform.position.x, Point1.transform.position.y));
line.SetPosition(1, new Vector2(Point2.transform.position.x, Point2.transform.position.y));
//Raycasts between the two points.
RaycastHit2D Intersect = Physics2D.Raycast(Point1.transform.position, Point2.transform.position, RaycastDistance);
Debug.DrawLine(Point1.transform.position, Point2.transform.position, Color.green);
//If the raycast hits a gameobject of the specific layer
if (Intersect.collider.gameObject.layer == 8)
{
Color PointColor = Intersect.collider.gameObject.GetComponent<SpriteRenderer>().color;
//If the gameobject has been hit by another raycast, change it to the mixed color of the 2 different line renderers.
if(PointColor != Color.white)
{
PointColor = MixedColor;
}
//Makes the gameobject the same color as the line renderer.
else
{
PointColor = line.startColor;
}
}
}
Comment