X-Git-Url: http://git.purplebirdman.com/lightcycles.git/blobdiff_plain/641c10419faa820148a6939ae3c24db13ee749e1..3466ce2da2a33ae069d719208f8037e0c14e4367:/player/player.gd diff --git a/player/player.gd b/player/player.gd index ed5bba0..3cd1522 100644 --- a/player/player.gd +++ b/player/player.gd @@ -8,16 +8,17 @@ signal playerRestart @onready var _skin = $skin +@onready var _ray = $RayCast3D @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 var distance = 3.0 +@export var distance: float = 3.0 @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 velocity.length() == 0: + 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