Search code examples
c#unity-game-enginesyntax-errorcharactercollision-detection

Unity 3d / C# Error CS0103 "The name 'collision' does not exist in the current context"


I'm trying to detect when my player's character controller touches a gameobject called 'water', but I get the error "The name 'collision' does not exist in the current context."

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerTouched : MonoBehaviour
{
    public void OnControllerColliderHit(ControllerColliderHit hit)

    {
        if (collision.gameObject.tag == "Water")
        {

            Debug.Log("it worked!!");
        }
    }
}

I originally tried using OnCollisionEnter, but that didn't work.


Solution

  • Change your method to this and it will be working again;

    public void OnControllerColliderHit(ControllerColliderHit collision)
    {
        if (collision.gameObject.tag == "Water")
        {
            Debug.Log("it worked!!");
        }
    }