From fbc29b16f6c466bede5a96fb332d72444b331a43 Mon Sep 17 00:00:00 2001 From: "dian.chen" Date: Thu, 29 Aug 2024 15:12:17 +0800 Subject: [PATCH] fix ai --- scene/ai/bullet01.tscn | 61 ++++++++++--------- script/ai/action/action_blackboard_set.gd | 10 --- script/ai/action_blackboard.gd | 10 +++ .../action_blackboard_add.gd | 11 ++++ .../action_blackboard_check.gd | 30 +++++++++ .../action_blackboard_set.gd | 10 +++ 6 files changed, 94 insertions(+), 38 deletions(-) delete mode 100644 script/ai/action/action_blackboard_set.gd create mode 100644 script/ai/action_blackboard.gd create mode 100644 script/ai/action_blackboard/action_blackboard_add.gd create mode 100644 script/ai/action_blackboard/action_blackboard_check.gd create mode 100644 script/ai/action_blackboard/action_blackboard_set.gd diff --git a/scene/ai/bullet01.tscn b/scene/ai/bullet01.tscn index d21e519..44d03cf 100644 --- a/scene/ai/bullet01.tscn +++ b/scene/ai/bullet01.tscn @@ -1,17 +1,18 @@ -[gd_scene load_steps=9 format=3 uid="uid://bgku27xawscbt"] +[gd_scene load_steps=10 format=3 uid="uid://bgku27xawscbt"] [ext_resource type="Script" path="res://addons/beehave/nodes/beehave_tree.gd" id="1_r673b"] [ext_resource type="Script" path="res://addons/beehave/nodes/composites/selector.gd" id="2_5ltau"] [ext_resource type="Script" path="res://addons/beehave/nodes/composites/sequence.gd" id="3_yeaa5"] -[ext_resource type="Script" path="res://addons/beehave/nodes/leaves/blackboard_compare.gd" id="4_40g6e"] +[ext_resource type="Script" path="res://script/ai/action_blackboard/action_blackboard_check.gd" id="4_vnt1w"] [ext_resource type="Script" path="res://script/ai/action/action_destroy.gd" id="5_0a0n1"] [ext_resource type="Script" path="res://script/ai/action/action_wait.gd" id="6_omj7f"] -[ext_resource type="Script" path="res://addons/beehave/nodes/leaves/blackboard_set.gd" id="7_42vmm"] +[ext_resource type="Script" path="res://script/ai/action_blackboard/action_blackboard_set.gd" id="7_gpffp"] [ext_resource type="Script" path="res://script/ai/action/action_attack1.gd" id="7_wcjhl"] +[ext_resource type="Script" path="res://script/ai/action_blackboard/action_blackboard_add.gd" id="8_rm753"] [node name="BeehaveTree" type="Node" node_paths=PackedStringArray("blackboard")] script = ExtResource("1_r673b") -blackboard = NodePath("@Node@19131") +blackboard = NodePath("@Node@19110") [node name="SelectorComposite" type="Node" parent="."] script = ExtResource("2_5ltau") @@ -19,10 +20,9 @@ script = ExtResource("2_5ltau") [node name="SequenceComposite" type="Node" parent="SelectorComposite"] script = ExtResource("3_yeaa5") -[node name="BlackboardCompareCondition" type="Node" parent="SelectorComposite/SequenceComposite"] -script = ExtResource("4_40g6e") -left_operand = "stage" -right_operand = "0" +[node name="CheckStep0" type="Node" parent="SelectorComposite/SequenceComposite"] +script = ExtResource("4_vnt1w") +key = "step" [node name="ActionWait" type="Node" parent="SelectorComposite/SequenceComposite"] script = ExtResource("6_omj7f") @@ -31,18 +31,18 @@ wait_time = 0.1 [node name="ActionAttack1" type="Node" parent="SelectorComposite/SequenceComposite"] script = ExtResource("7_wcjhl") -[node name="BlackboardSetAction" type="Node" parent="SelectorComposite/SequenceComposite"] -script = ExtResource("7_42vmm") -key = "stage" -value = "2" +[node name="SetStep1" type="Node" parent="SelectorComposite/SequenceComposite"] +script = ExtResource("7_gpffp") +key = "step" +value = 1 [node name="SequenceComposite2" type="Node" parent="SelectorComposite"] script = ExtResource("3_yeaa5") -[node name="BlackboardCompareCondition" type="Node" parent="SelectorComposite/SequenceComposite2"] -script = ExtResource("4_40g6e") -left_operand = "stage" -right_operand = "1" +[node name="CheckStep1" type="Node" parent="SelectorComposite/SequenceComposite2"] +script = ExtResource("4_vnt1w") +key = "step" +value = 1 [node name="ActionWait" type="Node" parent="SelectorComposite/SequenceComposite2"] script = ExtResource("6_omj7f") @@ -51,23 +51,28 @@ wait_time = 0.1 [node name="ActionAttack1" type="Node" parent="SelectorComposite/SequenceComposite2"] script = ExtResource("7_wcjhl") -[node name="BlackboardSetAction2" type="Node" parent="SelectorComposite/SequenceComposite2"] -script = ExtResource("7_42vmm") -key = "2" -value = "2" +[node name="AddHit" type="Node" parent="SelectorComposite/SequenceComposite2"] +script = ExtResource("8_rm753") +key = "hit" +value = 1 -[node name="BlackboardSetAction" type="Node" parent="SelectorComposite/SequenceComposite2"] -script = ExtResource("7_42vmm") -key = "stage" -value = "2" +[node name="CheckHit5" type="Node" parent="SelectorComposite/SequenceComposite2"] +script = ExtResource("4_vnt1w") +key = "hit" +value = 5 + +[node name="SetStep2" type="Node" parent="SelectorComposite/SequenceComposite2"] +script = ExtResource("7_gpffp") +key = "step" +value = 2 [node name="SequenceComposite3" type="Node" parent="SelectorComposite"] script = ExtResource("3_yeaa5") -[node name="BlackboardCompareCondition" type="Node" parent="SelectorComposite/SequenceComposite3"] -script = ExtResource("4_40g6e") -left_operand = "stage" -right_operand = "2" +[node name="CheckStep2" type="Node" parent="SelectorComposite/SequenceComposite3"] +script = ExtResource("4_vnt1w") +key = "step" +value = 2 [node name="ActionDestroy" type="Node" parent="SelectorComposite/SequenceComposite3"] script = ExtResource("5_0a0n1") diff --git a/script/ai/action/action_blackboard_set.gd b/script/ai/action/action_blackboard_set.gd deleted file mode 100644 index 17e2564..0000000 --- a/script/ai/action/action_blackboard_set.gd +++ /dev/null @@ -1,10 +0,0 @@ -extends Action -class_name ActionBlackboardSet - -@export var key: String -@export var value: Variant - - -func run(character: Character, blackboard: Blackboard) -> int: - blackboard.set(key, value) - return SUCCESS diff --git a/script/ai/action_blackboard.gd b/script/ai/action_blackboard.gd new file mode 100644 index 0000000..7e4d23a --- /dev/null +++ b/script/ai/action_blackboard.gd @@ -0,0 +1,10 @@ +@icon("res://addons/beehave/icons/blackboard.svg") +class_name ActionBlackboard +extends Action + +func run(character: Character, blackboard: Blackboard) -> int: + return execute(character, blackboard) + + +func execute(character: Character, blackboard: Blackboard) -> int: + return FAILURE diff --git a/script/ai/action_blackboard/action_blackboard_add.gd b/script/ai/action_blackboard/action_blackboard_add.gd new file mode 100644 index 0000000..de65577 --- /dev/null +++ b/script/ai/action_blackboard/action_blackboard_add.gd @@ -0,0 +1,11 @@ +extends ActionBlackboard +class_name ActionBlackboardAdd + +@export var key: String +@export var value: int + + +func execute(character: Character, blackboard: Blackboard) -> int: + var left: int = blackboard.get_value(key, 0) + blackboard.set(key, left+value) + return SUCCESS diff --git a/script/ai/action_blackboard/action_blackboard_check.gd b/script/ai/action_blackboard/action_blackboard_check.gd new file mode 100644 index 0000000..e078e0c --- /dev/null +++ b/script/ai/action_blackboard/action_blackboard_check.gd @@ -0,0 +1,30 @@ +extends ActionBlackboard +class_name ActionBlackboardCheck + +enum Operators { + EQUAL, + NOT_EQUAL, + GREATER, + LESS, + GREATER_EQUAL, + LESS_EQUAL, +} +@export var key: String + +@export_enum("==", "!=", ">", "<", ">=", "<=") var operator: int = 0 +@export var value: int + + +func execute(character: Character, blackboard: Blackboard) -> int: + var left: Variant = blackboard.get_value(key, 0) + var result: bool = false + + match operator: + Operators.EQUAL: result = left == value + Operators.NOT_EQUAL: result = left != value + Operators.GREATER: result = left > value + Operators.LESS: result = left < value + Operators.GREATER_EQUAL: result = left >= value + Operators.LESS_EQUAL: result = left <= value + + return SUCCESS if result else FAILURE \ No newline at end of file diff --git a/script/ai/action_blackboard/action_blackboard_set.gd b/script/ai/action_blackboard/action_blackboard_set.gd new file mode 100644 index 0000000..871cff4 --- /dev/null +++ b/script/ai/action_blackboard/action_blackboard_set.gd @@ -0,0 +1,10 @@ +extends ActionBlackboard +class_name ActionBlackboardSet + +@export var key: String +@export var value: int + + +func execute(character: Character, blackboard: Blackboard) -> int: + blackboard.set(key, value) + return SUCCESS