+ if _state == state.ALIVE:
+ velocity = global_transform.basis.z * speed
+ move_and_slide()
+ if _ray_intersect_length() < 0.05 or velocity.length() < 0.02:
+ _explode()
+
+
+func _ray_intersect_length() -> float:
+ if _ray.is_colliding():
+ var point: Vector3 = _ray.get_collision_point()
+ var v: Vector3 = _ray.global_position - point
+ return v.length()
+ else:
+ return INF
+
+func _explode() -> void:
+ _skin.visible = false
+ _state = state.DEAD
+ playerDestroyed.emit(self)
+
+
+func get_camera_rid() -> RID:
+ return _camera.get_camera_rid()
+
+
+func set_input_map(input_map) -> void:
+ _input_map = input_map