petoriaware/petoriaware/scenes/Aly1.gd
2025-01-29 12:00:28 -08:00

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