Godot Version
4.3
Question
Just what the title says, every time I open the scene my door automatically plays its open animation and its really annoying. Any help is great!
(I have 3 different scripts, 1 for my interacting raycast, 1 for the code to interact with, and 1 for my door)
Door:
extends Node3D
@onready var Door_Toggle := $"01/door/Door_Open-Close"
var Playback : AnimationNodeStateMachinePlayback
var isOpen := false
func _ready() -> void:
Playback = $AnimationTree.get("parameters/playback")
func Toggle(_body) -> void:
isOpen = !isOpen
if isOpen:
Playback.travel("Door_Open")
Door_Toggle.play()
else:
Playback.travel("Door_Close")
Door_Toggle.play()
Raycast:
extends RayCast3D
@onready var Prompt := $Prompt
func _physics_process(_delta: float) -> void:
Prompt.text = ""
if is_colliding():
var Collider = get_collider()
if Collider is Interactable:
Prompt.text = Collider.Get_Prompt()
if Input.is_action_just_pressed("Interact"):
Collider.Interact(owner)
Object Interaction:
extends CollisionObject3D
class_name Interactable
signal Interacted(body)
@export var Prompt_Message := "Interact"
func Get_Prompt():
var Key_Name := ""
for action in InputMap.action_get_events("Interact"):
if action is InputEventKey:
Key_Name = action.as_text_physical_keycode()
break
return Prompt_Message + "\n[" + Key_Name + "]"
func Interact(body) -> void:
Interacted.emit(body)