# Why does collider return null?

4.2.2

### Question

I’m currently doing the first 3D game lesson from the docs to get more familiar with Godot and while everything is working I’m confused on how the get_collider method on line 34 can return null. I checked on the documentation for KinematicCollision3D, but it didn’t really explain anything. It’s important to me to know this, because I don’t like copying code without understanding it.

``````extends CharacterBody3D

# How fast the player moves in meters per second.
@export var speed = 14
# The downward acceleration when in the air, in meters per second squared.
@export var fall_acceleration = 75
@export var jump_impulse = 20
# Vertical impulse applied to the character upon bouncing over a mob in
# meters per second.
@export var bounce_impulse = 16

var target_velocity = Vector3.ZERO

func _physics_process(delta):
var direction = Vector3.ZERO

if Input.is_action_pressed("move_right"):
direction.x += 1
if Input.is_action_pressed("move_left"):
direction.x -= 1
if Input.is_action_pressed("move_back"):
direction.z += 1
if Input.is_action_pressed("move_forward"):
direction.z -= 1
if is_on_floor() and Input.is_action_just_pressed("jump"):
target_velocity.y = jump_impulse
# Iterate through all collisions that occurred this frame
for index in range(get_slide_collision_count()):
# We get one of the collisions with the player
var collision = get_slide_collision(index)

# If the collision is with ground
if collision.get_collider() == null:
print("NULL")
continue
# If the collider is with a mob
if collision.get_collider().is_in_group("mob"):
var mob = collision.get_collider()
# we check that we are hitting it from above.
if Vector3.UP.dot(collision.get_normal()) > 0.1:
# If so, we squash it and bounce.
mob.squash()
target_velocity.y = bounce_impulse
# Prevent further duplicate calls.
break
if direction != Vector3.ZERO:
direction = direction.normalized()
\$Pivot.basis = Basis.looking_at(direction)

# Ground Velocity
target_velocity.x = direction.x * speed
target_velocity.z = direction.z * speed

# Vertical Velocity
if not is_on_floor(): # If in the air, fall towards the floor. Literally gravity
target_velocity.y = target_velocity.y - (fall_acceleration * delta)

# Moving the Character
velocity = target_velocity
move_and_slide()

``````

Hi,
you should call move_and_slide before check the collisions, I think.

1 Like

Huh, I’m not getting anymore null results. So by calling move_and_slide before checking collisions make sure I get no null results?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.