]> Untitled Git - lightcycles.git/blobdiff - player/player.gd
Added export presets
[lightcycles.git] / player / player.gd
index ed5bba0c54fd0256ad6c18e9bae4634d319828b8..3cd1522f7d8371ba893fb418117173c18abbe771 100644 (file)
@@ -8,16 +8,17 @@ signal playerRestart
 
 
 @onready var _skin = $skin
 
 
 @onready var _skin = $skin
+@onready var _ray = $RayCast3D
 
 
 @export_category("Appearance")
 @export var color: Color = Color.GOLD
 
 @export_category("Movement") 
 
 
 @export_category("Appearance")
 @export var color: Color = Color.GOLD
 
 @export_category("Movement") 
-@export var speed = 5.0
+@export var speed: float = 5.0
 
 @export_category("Camera")
 
 @export_category("Camera")
-@export var distance = 3.0
+@export var distance: float = 3.0
 
 
 @onready var _springArm = $SpringArm3D
 
 
 @onready var _springArm = $SpringArm3D
@@ -51,10 +52,18 @@ func _physics_process(_delta: float) -> void:
        if _state == state.ALIVE:
                velocity = global_transform.basis.z * speed
                move_and_slide()
        if _state == state.ALIVE:
                velocity = global_transform.basis.z * speed
                move_and_slide()
-               if velocity.length() == 0:
+               if _ray_intersect_length() < 0.05 or velocity.length() < 0.02:
                        _explode()
 
 
                        _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
 func _explode() -> void:
        _skin.visible = false
        _state = state.DEAD