Attempt to call function 'is_colliding' in base 'null instance' on a null instance.

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By newgodot_user

please help me with this error from the tutorial “Improved First Person Character Controller (Godot FPS Tutorial)” by Garbaj.

Full Script:
extends KinematicBody

var speed = 10
var h_acceleration = 6
var air_acceleration = 1
var normal_acceleration = 6
var gravity = 20
var jump = 10
var full_contact = false

var mouse_sensitivity = 0.03

var direction = Vector3()
var h_velocity = Vector3()
var movement = Vector3()
var gravity_vec = Vector3()

onready var head = $Head
onready var ground_check = $GroundCheck

func _ready():
pass

func _input(event):
if event is InputEventMouseMotion:
rotate_y(deg2rad(-event.relative.x * mouse_sensitivity))
head.rotate_x(deg2rad(-event.relative.y * mouse_sensitivity))
head.rotation.x = clamp(head.rotation.x, deg2rad(-89), deg2rad(89))

func _physics_process(delta):

direction = Vector3()

full_contact = ground_check.is_colliding()        #ERROR IS HERE

if not is_on_floor():
	gravity_vec += Vector3.DOWN * gravity * delta
	h_acceleration = air_acceleration
elif is_on_floor() and full_contact:
	gravity_vec = -get_floor_normal() * gravity
	h_acceleration = normal_acceleration
else:
	gravity_vec = -get_floor_normal()
	h_acceleration = normal_acceleration
	
if Input.is_action_just_pressed("jump") and (is_on_floor() or ground_check.is_colliding()):
	gravity_vec = Vector3.UP * jump

if Input.is_action_pressed("move_forward"):
	direction -= transform.basis.z
elif Input.is_action_pressed("move_backward"):
	direction += transform.basis.z
if Input.is_action_pressed("move_left"):
	direction -= transform.basis.x
elif Input.is_action_pressed("move_right"):
	direction += transform.basis.x

direction = direction.normalized()
h_velocity = h_velocity.linear_interpolate(direction * speed, h_acceleration * delta)
movement.z = h_velocity.z + gravity_vec.z
movement.x = h_velocity.x + gravity_vec.x
movement.y = gravity_vec.y

move_and_slide(movement, Vector3.UP)
:bust_in_silhouette: Reply From: jgodfrey

The code related to the is_colliding() checks looks OK. The error is indicating that your ground_check variable is null. In the code, that’s set here:

onready var ground_check = $GroundCheck

So, that assumes there is a node named GroundCheck that is a child of the node that contains the script itself. I’d assume that node doesn’t exist. Likely, it’s just named wrong in the scene tree (or just has a typo in the name).