2 extends CharacterBody3D
10 @onready var _skin = $skin
13 @export_category("Appearance")
14 @export var color: Color = Color.GOLD
16 @export_category("Movement")
17 @export var speed = 5.0
19 @export_category("Camera")
20 @export var distance = 3.0
23 @onready var _springArm = $SpringArm3D
24 @onready var _camera = $SpringArm3D/Camera3D
26 enum state {ALIVE, DEAD}
27 var _state = state.ALIVE
32 func _ready() -> void:
33 _springArm.spring_length = distance
34 _skin.set_color(color)
37 func _input(event: InputEvent) -> void:
38 if _state == state.ALIVE:
39 if event.is_action_pressed(_input_map.left):
40 global_rotate(Vector3.UP, PI/2)
42 elif event.is_action_pressed(_input_map.right):
43 global_rotate(Vector3.UP, -PI/2)
46 if event.is_action_pressed(_input_map.restart):
47 playerRestart.emit(self)
50 func _physics_process(_delta: float) -> void:
51 if _state == state.ALIVE:
52 velocity = global_transform.basis.z * speed
54 if velocity.length() == 0:
58 func _explode() -> void:
61 playerDestroyed.emit(self)
64 func get_camera_rid() -> RID:
65 return _camera.get_camera_rid()
68 func set_input_map(input_map) -> void:
69 _input_map = input_map