From df3abdb852996b7073ef9989c68fcefa989f52bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Tue, 26 Aug 2025 10:55:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0EntityBase=E5=92=8CRooster?= =?UTF-8?q?=E7=B1=BB=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=8A=A8=E7=94=BB=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E5=B9=B6=E4=BF=AE=E5=A4=8D=E5=8F=98=E9=87=8F=E5=91=BD?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components/Abstracts/EntityBase.tscn | 12 ++++++++++++ components/Characters/Rooster.tscn | 13 +++++++++++-- scripts/Contents/Characters/Rooster.gd | 3 +++ scripts/Statemachine/EntityBase.gd | 10 +++++----- 4 files changed, 31 insertions(+), 7 deletions(-) diff --git a/components/Abstracts/EntityBase.tscn b/components/Abstracts/EntityBase.tscn index 2d57d5d..88673cd 100644 --- a/components/Abstracts/EntityBase.tscn +++ b/components/Abstracts/EntityBase.tscn @@ -4,6 +4,17 @@ [ext_resource type="PackedScene" uid="uid://dcjqjqere8ets" path="res://components/UI/EntityStateBar.tscn" id="2_uje1g"] [sub_resource type="SpriteFrames" id="SpriteFrames_wcqpm"] +animations = [{ +"frames": [], +"loop": true, +"name": &"idle", +"speed": 5.0 +}, { +"frames": [], +"loop": true, +"name": &"walk", +"speed": 5.0 +}] [sub_resource type="CircleShape2D" id="CircleShape2D_buhm1"] radius = 40.0 @@ -83,6 +94,7 @@ script = ExtResource("1_mvol6") unique_name_in_owner = true position = Vector2(0, -50) sprite_frames = SubResource("SpriteFrames_wcqpm") +animation = &"idle" [node name="hurtbox" type="Area2D" parent="texture"] unique_name_in_owner = true diff --git a/components/Characters/Rooster.tscn b/components/Characters/Rooster.tscn index 752c6fa..e592c5a 100644 --- a/components/Characters/Rooster.tscn +++ b/components/Characters/Rooster.tscn @@ -10,12 +10,20 @@ animations = [{ "frames": [{ "duration": 1.0, "texture": ExtResource("2_q0j6j") +}], +"loop": true, +"name": &"idle", +"speed": 5.0 +}, { +"frames": [{ +"duration": 1.0, +"texture": ExtResource("2_q0j6j") }, { "duration": 1.0, "texture": ExtResource("3_b0fgx") }], "loop": true, -"name": &"default", +"name": &"walk", "speed": 5.0 }] @@ -33,5 +41,6 @@ sprite_frames = SubResource("SpriteFrames_4v2ol") position = Vector2(12, 16) shape = SubResource("CircleShape2D_h1v0q") -[node name="statebar" parent="." index="2"] +[node name="statebar" parent="." index="2" node_paths=PackedStringArray("entity")] position = Vector2(0, -151) +entity = NodePath("..") diff --git a/scripts/Contents/Characters/Rooster.gd b/scripts/Contents/Characters/Rooster.gd index e927cdc..845628a 100644 --- a/scripts/Contents/Characters/Rooster.gd +++ b/scripts/Contents/Characters/Rooster.gd @@ -2,8 +2,11 @@ extends EntityBase class_name Rooster func ai(): + texture.play("walk") var direction = Vector2( Input.get_axis("m_left", "m_right"), Input.get_axis("m_up", "m_down") ) move(direction) + if direction.length() == 0: + texture.play("idle") diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index 2b03175..99f5008 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -2,11 +2,11 @@ extends CharacterBody2D class_name EntityBase # 这是个抽象类 @export var maxHealth: float = 100 -@export var movementSpeed: float = 100 +@export var movementSpeed: float = 1 -@onready var animatree = $"%animatree" -@onready var texture = $"%texture" -@onready var hurtbox = $"%hurtbox" +@onready var animatree: AnimationTree = $"%animatree" +@onready var texture: AnimatedSprite2D = $"%texture" +@onready var hurtbox: Area2D = $"%hurtbox" var health: float = 0 @@ -24,7 +24,7 @@ func _physics_process(_delta: float) -> void: # 通用方法 func move(direction: Vector2): - velocity = direction.normalized() * movementSpeed + velocity = direction.normalized() * movementSpeed * 150 * abs(animatree.get("parameters/blend_position")) var currentDirection = sign(direction.x) if currentDirection != 0: lastDirection = currentDirection