61 lines
1.3 KiB
GDScript
61 lines
1.3 KiB
GDScript
extends Node3D
|
|
|
|
@onready var playback: AnimationNodeStateMachinePlayback = %AnimationTree.get("parameters/playback")
|
|
@export var pouncing := false
|
|
|
|
func _ready() -> void:
|
|
$Breed.paused = true
|
|
|
|
func idle():
|
|
playback.travel("Idle")
|
|
|
|
func walk():
|
|
playback.travel("Walk")
|
|
|
|
func pounce():
|
|
pass
|
|
|
|
func is_busy():
|
|
return pouncing
|
|
|
|
func root_motion():
|
|
return %AnimationTree.get_root_motion_position()
|
|
|
|
func caught():
|
|
var manager: PlayerManager = $"../.."
|
|
manager.switch_player($"..".input)
|
|
$"..".queue_free()
|
|
|
|
var can_press: bool = true
|
|
func _process(_delta: float) -> void:
|
|
if not visible:
|
|
return
|
|
var input: PlayerInputData = $"..".input
|
|
if input == null:
|
|
$Breed.paused = true
|
|
return
|
|
$Breed.paused = not breeding
|
|
if input.raw_dig or input.raw_jump:
|
|
if can_press:
|
|
var manager: PlayerManager = $"../.."
|
|
manager.switch_player(input)
|
|
can_press = false
|
|
else:
|
|
can_press = true
|
|
|
|
|
|
var breeding = false
|
|
func _on_area_3d_on() -> void:
|
|
breeding = true
|
|
|
|
|
|
func _on_area_3d_off() -> void:
|
|
breeding = false
|
|
|
|
func _on_breed_timeout() -> void:
|
|
if randi_range(0, 2) == 2 or true:
|
|
var new: Player = load("res://player.tscn").instantiate()
|
|
new.transform = get_parent().transform
|
|
new.transform.origin.y += 1.
|
|
new.initial_model = Player.initial.vole
|
|
get_parent().get_parent().add_child(new)
|