44 lines
1.1 KiB
GDScript
44 lines
1.1 KiB
GDScript
extends Node3D
|
|
|
|
@onready var camera = $"../../Camera3D"
|
|
@onready var aly_sprite = $Aly
|
|
@onready var music = $Music
|
|
@onready var explosion_timer = $ExplosionTimer
|
|
|
|
@onready var boom_sound = $Boom
|
|
@onready var win_sound = $Win
|
|
|
|
var loss_aly = load("res://sprites/aly1/golden_aly_shocked.jpg")
|
|
var win_aly = load("res://sprites/aly1/green_aly.jpg")
|
|
|
|
var loss_center = Vector3(0.0, -1.9, -10.0)
|
|
|
|
func mouse_pos_3d(pos):
|
|
var drop_plane = Plane(Vector3(0,0,1),-10)
|
|
return drop_plane.intersects_ray(camera.project_ray_origin(pos), camera.project_ray_normal(pos))
|
|
|
|
func _input(event):
|
|
if Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT):
|
|
if event is InputEventMouse:
|
|
var pos = mouse_pos_3d(event.position)
|
|
var dist = aly_sprite.position.distance_to(pos)
|
|
if dist < 1.0:
|
|
aly_sprite.position.x = pos.x
|
|
aly_sprite.position.y = pos.y
|
|
|
|
|
|
func _on_visibility_changed():
|
|
if self.visible:
|
|
music.play()
|
|
explosion_timer.start()
|
|
|
|
|
|
func _on_explosion_timer_timeout():
|
|
if aly_sprite.position.distance_to(loss_center) > 3.0:
|
|
# win
|
|
win_sound.play()
|
|
aly_sprite.texture = win_aly
|
|
else:
|
|
# loss
|
|
boom_sound.play()
|
|
aly_sprite.texture = loss_aly
|