- Home /
Raycast hit Not Set to an instance object
I'm trying to get an enemy to turn around when a wall is in front, for which I set a raycast to detect if the collider name was a wall. When trying to test the code, it shoots the error "Object reference not set to an instance of an object". I don't see the problem.
here is the code
void WallDetection()
{
RaycastHit2D wallRay = Physics2D.Raycast(wallDetect.position, Vector2.right, 4f);
if (wallRay.collider.name == "Wall Right")
{
moveRight = false;
}
else if (wallRay.collider.name == "Wall Left")
{
moveRight = true;
}
Answer by Glurth · Jun 10, 2019 at 05:04 PM
you need to confirm you actually hit a collider (before you check it's tag)
if (wallRay.collider != null)
as shown in the example on this page: https://docs.unity3d.com/ScriptReference/Physics2D.Raycast.html
Answer by SneakyLeprechaun · Jun 10, 2019 at 05:07 PM
If your wallRay doesn't end up colliding with anything, it will cause your program to crash. You can prevent this by checking if wallRay = null
, or replacing the instantiation with the following:
RaycastHit2D wallRay; if(Physics2D.Raycast(wallDetect.position, Vector2.right, out wallRay, 4f){ //if the raycast hits something, do the following... }
hope that helps!