35 lines
913 B
GDScript
35 lines
913 B
GDScript
extends Node3D
|
|
|
|
signal destination_reached
|
|
|
|
|
|
var is_live: bool = false
|
|
var is_target_reached: bool = true
|
|
|
|
var target_position: Vector3
|
|
|
|
func _ready() -> void:
|
|
target_position = Vector3.ZERO
|
|
destination_reached.connect(on_target_reached)
|
|
|
|
func _process(delta: float) -> void:
|
|
if is_target_reached == false:
|
|
self.global_position = lerp(global_position, target_position, delta / 0.1)
|
|
|
|
if global_position.distance_to(target_position) < 0.1/1000 and is_target_reached == false:
|
|
|
|
destination_reached.emit()
|
|
|
|
func moveTo(target_pos: Vector3):
|
|
target_position = target_pos
|
|
is_target_reached = false
|
|
|
|
func on_target_reached():
|
|
print("Target Reached")
|
|
is_target_reached = true
|
|
|
|
|
|
func _on_static_body_3d_input_event(camera: Node, event: InputEvent, event_position: Vector3, normal: Vector3, shape_idx: int) -> void:
|
|
if event.is_action_released("left_mouse_click"):
|
|
GameManager.bullet_selected.emit(self)
|