49 lines
1.4 KiB
GDScript
49 lines
1.4 KiB
GDScript
extends StaticBody2D
|
|
|
|
var player_dekat = false
|
|
var is_open = false
|
|
|
|
func _ready():
|
|
# Menghubungkan sensor supaya tahu kalau robot datang atau pergi
|
|
$Sensor.body_entered.connect(_on_sensor_body_entered)
|
|
$Sensor.body_exited.connect(_on_sensor_body_exited)
|
|
|
|
func _on_sensor_body_entered(body):
|
|
if body.name == "Player":
|
|
player_dekat = true
|
|
print("Tekan F untuk membuka gerbang!")
|
|
|
|
func _on_sensor_body_exited(body):
|
|
if body.name == "Player":
|
|
player_dekat = false
|
|
|
|
func _input(event):
|
|
if event.is_action_pressed("interact") and player_dekat:
|
|
tanya_pertanyaan()
|
|
|
|
func tanya_pertanyaan():
|
|
# Simulasi jawaban benar
|
|
var jawaban_benar = true
|
|
|
|
if jawaban_benar:
|
|
toggle_gate()
|
|
|
|
func toggle_gate():
|
|
is_open = !is_open
|
|
|
|
# Buat animasi perubahan gambar
|
|
var tween = create_tween()
|
|
|
|
if is_open:
|
|
# MEMBUKA: Matikan tabrakan dan buat gambar melebar (misal jadi 2.5 kali lipat)
|
|
$CollisionShape2D.set_deferred("disabled", true)
|
|
# Ganti TRANS_EASE_OUT menjadi EASE_OUT
|
|
tween.tween_property($Sprite2D, "scale:x", 0.5, 0.4).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_OUT)
|
|
print("Gerbang Terbuka!")
|
|
else:
|
|
# MENUTUP: Aktifkan tabrakan dan kembalikan gambar ke ukuran normal (1.0)
|
|
$CollisionShape2D.set_deferred("disabled", false)
|
|
# Ganti TRANS_EASE_OUT menjadi EASE_OUT
|
|
tween.tween_property($Sprite2D, "scale:x", 0.1, 0.4).set_trans(Tween.TRANS_BACK).set_ease(Tween.EASE_OUT)
|
|
print("Gerbang Tertutup!")
|