测试按键/子弹实体/AI结构修改

master
chendian 2 years ago
parent 8735130f03
commit f0a8bffb85

@ -0,0 +1,22 @@
[gd_resource type="Resource" script_class="CharacterCfg" load_steps=7 format=3 uid="uid://efaynwj7143w"]
[ext_resource type="Resource" uid="uid://dfyg6ye7n3wgj" path="res://config/character_move/fast.tres" id="1_b02yl"]
[ext_resource type="Resource" uid="uid://dpajmgrlaytah" path="res://config/character_mp/normal.tres" id="2_hrxfp"]
[ext_resource type="Script" path="res://script/config/character_cfg.gd" id="3_p63bn"]
[ext_resource type="Resource" uid="uid://h1curvk64vm3" path="res://config/character_shield/none.tres" id="4_qnn3b"]
[ext_resource type="SpriteFrames" uid="uid://i01jiylcqat" path="res://resource/animation/character/bullet01_move.aseprite" id="4_x87ux"]
[ext_resource type="Resource" uid="uid://5jes0p152akr" path="res://config/character_stun/none.tres" id="6_y4hsh"]
[resource]
script = ExtResource("3_p63bn")
name = "hero01"
type = 2
sprite_frames = ExtResource("4_x87ux")
sprite_harf_height = 8
sprite_width = 16
move = ExtResource("1_b02yl")
shield = ExtResource("4_qnn3b")
stun = ExtResource("6_y4hsh")
mp = ExtResource("2_hrxfp")
hp_max = 100.0
attack = 10.0

@ -0,0 +1,9 @@
[gd_resource type="Resource" script_class="CharacterMoveCfg" load_steps=2 format=3 uid="uid://dfyg6ye7n3wgj"]
[ext_resource type="Script" path="res://script/config/character_move_cfg.gd" id="1_vw5kv"]
[resource]
script = ExtResource("1_vw5kv")
speed = 5.0
gravity_scale = 1.0
jump_velocity = 6.0

@ -0,0 +1,11 @@
[gd_resource type="Resource" script_class="StunCfg" load_steps=2 format=3 uid="uid://5jes0p152akr"]
[ext_resource type="Script" path="res://script/config/stun_cfg.gd" id="1_8rl8l"]
[resource]
script = ExtResource("1_8rl8l")
stun_max = 100.0
recover_speed = 10.0
recover_cd = 2.0
recover_break_speed = 20.0
recover_break_cd = 2.0

@ -16,7 +16,6 @@ action = "attack_light"
name = ""
skill_animation = ExtResource("3_3pp8a")
attack_list = Array[Resource("res://script/config/attack_cfg.gd")]([ExtResource("1_mxlqc")])
attack_particle_list = Array[PackedScene]([])
free_lock = false
refresh_animation = false
sprite_frames = ExtResource("4_q0bln")

@ -158,6 +158,11 @@ weapon_next={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"echo":false,"script":null)
]
}
test_1={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":49,"key_label":0,"unicode":49,"echo":false,"script":null)
]
}
[memory]

@ -0,0 +1,25 @@
[remap]
importer="Aseprite SpriteFrames Import"
type="SpriteFrames"
uid="uid://i01jiylcqat"
path="res://.godot/imported/bullet01_move.aseprite-8423d8194ac2a1deb36e21fbe45fc8a3.res"
[deps]
source_file="res://resource/animation/character/bullet01_move.aseprite"
dest_files=["res://.godot/imported/bullet01_move.aseprite-8423d8194ac2a1deb36e21fbe45fc8a3.res"]
[params]
spritesheet/layout=0
spritesheet/fixed_rows_count=1
spritesheet/fixed_columns_count=1
spritesheet/border_type=0
spritesheet/trim=false
spritesheet/ignore_empty=false
spritesheet/merge_duplicates=false
animation/default/name="default"
animation/default/direction=0
animation/default/repeat_count=0
animation/autoplay=""

Binary file not shown.

After

Width:  |  Height:  |  Size: 443 B

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://wnc4eh75qpjg"
path="res://.godot/imported/bullet01_move.png-026174b86761d8501ce7112e860719f3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://resource/animation/character/bullet01_move.png"
dest_files=["res://.godot/imported/bullet01_move.png-026174b86761d8501ce7112e860719f3.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

File diff suppressed because one or more lines are too long

@ -14,7 +14,7 @@ tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"update": 1,
"values": [ExtResource("1_wo4do")]
}
tracks/1/type = "value"

@ -1,6 +0,0 @@
[gd_scene load_steps=2 format=3 uid="uid://1t2pkg7j2dkg"]
[ext_resource type="Script" path="res://script/ai/action/action_find_target.gd" id="1_jb1sy"]
[node name="FindTarget" type="Node"]
script = ExtResource("1_jb1sy")

@ -1,6 +0,0 @@
[gd_scene load_steps=2 format=3 uid="uid://06ww04hf5wl0"]
[ext_resource type="Script" path="res://script/ai/action_with_target/action_move_to_target.gd" id="1_t8ni6"]
[node name="MoveToTarget" type="Node"]
script = ExtResource("1_t8ni6")

@ -0,0 +1,29 @@
[gd_scene load_steps=8 format=3 uid="uid://c43cuvaiu2jha"]
[ext_resource type="PackedScene" uid="uid://ksxwg0alt2us" path="res://scene/character/character.tscn" id="1_f620f"]
[ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="2_irmil"]
[ext_resource type="Script" path="res://script/character/ai/bullet_ai.gd" id="3_c6unk"]
[ext_resource type="Script" path="res://addons/beehave/nodes/beehave_tree.gd" id="4_xod2c"]
[ext_resource type="Script" path="res://addons/beehave/nodes/composites/sequence.gd" id="5_mfd1o"]
[ext_resource type="PackedScene" uid="uid://1t2pkg7j2dkg" path="res://scene/ai/action/find_target.tscn" id="6_3qvhw"]
[ext_resource type="PackedScene" uid="uid://06ww04hf5wl0" path="res://scene/ai/action/move_to_target.tscn" id="7_yf62l"]
[node name="Character" instance=ExtResource("1_f620f")]
[node name="View" parent="." index="2"]
sprite_frames = ExtResource("2_irmil")
animation = &"long_air_attack01"
[node name="BulletAI" type="Node3D" parent="." index="8"]
script = ExtResource("3_c6unk")
[node name="BeehaveTree" type="Node" parent="BulletAI" index="0" node_paths=PackedStringArray("blackboard")]
script = ExtResource("4_xod2c")
blackboard = NodePath("@Node@39469")
[node name="SequenceComposite" type="Node" parent="BulletAI/BeehaveTree" index="0"]
script = ExtResource("5_mfd1o")
[node name="FindTarget" parent="BulletAI/BeehaveTree/SequenceComposite" index="0" instance=ExtResource("6_3qvhw")]
[node name="MoveToTarget" parent="BulletAI/BeehaveTree/SequenceComposite" index="1" instance=ExtResource("7_yf62l")]

@ -6,7 +6,7 @@
[ext_resource type="Script" path="res://script/character/move.gd" id="4_66r53"]
[ext_resource type="Texture2D" uid="uid://daqn6aqfp1hva" path="res://resource/animation/character/hero01_long_attack.png" id="4_fcd8a"]
[ext_resource type="Script" path="res://script/character/view.gd" id="4_vijjv"]
[ext_resource type="SpriteFrames" uid="uid://ce83cuqwgwwi4" path="res://resource/animation/character/hero01_long_attack.aseprite" id="5_m25rr"]
[ext_resource type="SpriteFrames" uid="uid://cndpnxtdh37ii" path="res://resource/animation/character/hero01_short_attack.aseprite" id="5_ijdkd"]
[ext_resource type="Script" path="res://script/character/skill.gd" id="6_h4xqy"]
[ext_resource type="AnimationLibrary" uid="uid://croik07a1qko5" path="res://resource/skill_animation_library/animation_library.tres" id="6_pakq5"]
[ext_resource type="Script" path="res://script/character/battle.gd" id="8_w84sf"]
@ -49,8 +49,8 @@ pixel_size = 0.02
double_sided = false
alpha_cut = 2
texture_filter = 0
sprite_frames = ExtResource("5_m25rr")
animation = &"long_attack03"
sprite_frames = ExtResource("5_ijdkd")
animation = &"short_attack01"
script = ExtResource("4_vijjv")
[node name="Move" type="Node3D" parent="."]

@ -1,29 +1,28 @@
[gd_scene load_steps=7 format=3 uid="uid://c37rf5ecfrvwn"]
[ext_resource type="PackedScene" uid="uid://ksxwg0alt2us" path="res://scene/character/character.tscn" id="1_eshlr"]
[ext_resource type="Script" path="res://script/character/monster/ai.gd" id="2_7ei2q"]
[ext_resource type="Script" path="res://script/character/ai/ai.gd" id="2_7ei2q"]
[ext_resource type="Script" path="res://addons/beehave/nodes/beehave_tree.gd" id="3_x3u4t"]
[ext_resource type="Script" path="res://addons/beehave/nodes/composites/sequence.gd" id="4_k2hsy"]
[ext_resource type="PackedScene" uid="uid://1t2pkg7j2dkg" path="res://scene/ai/action/find_target.tscn" id="5_t0771"]
[ext_resource type="PackedScene" uid="uid://06ww04hf5wl0" path="res://scene/ai/action/move_to_target.tscn" id="6_v4m1x"]
[ext_resource type="Script" path="res://script/ai/action/action_find_target.gd" id="5_m7lck"]
[ext_resource type="Script" path="res://script/ai/action_with_target/action_move_to_target.gd" id="6_ladgl"]
[node name="Character" instance=ExtResource("1_eshlr")]
[node name="Status" parent="." index="1"]
speed_up_rate = -0.5
[node name="View" parent="." index="2"]
animation = &"long_air_attack01"
[node name="AI" type="Node3D" parent="." index="8"]
[node name="MonsterAI" type="Node3D" parent="." index="8"]
script = ExtResource("2_7ei2q")
[node name="BeehaveTree" type="Node" parent="AI" index="0"]
[node name="BeehaveTree" type="Node" parent="MonsterAI" index="0"]
script = ExtResource("3_x3u4t")
[node name="SequenceComposite" type="Node" parent="AI/BeehaveTree" index="0"]
[node name="SequenceComposite" type="Node" parent="MonsterAI/BeehaveTree" index="0"]
script = ExtResource("4_k2hsy")
[node name="FindTarget" parent="AI/BeehaveTree/SequenceComposite" index="0" instance=ExtResource("5_t0771")]
[node name="ActionFindTarget" type="Node" parent="MonsterAI/BeehaveTree/SequenceComposite" index="0"]
script = ExtResource("5_m7lck")
[node name="MoveToTarget" parent="AI/BeehaveTree/SequenceComposite" index="1" instance=ExtResource("6_v4m1x")]
[node name="ActionMoveToTarget" type="Node" parent="MonsterAI/BeehaveTree/SequenceComposite" index="1"]
script = ExtResource("6_ladgl")

@ -1,4 +1,5 @@
extends Action
class_name ActionFindTarget
func run(character: Character) -> int:
var player_id = Global.character_mgr.get_player_id()

@ -0,0 +1,8 @@
extends Action
class_name ActionPrint
@export var context : String
func run(character: Character) -> int:
print(context)
return SUCCESS

@ -0,0 +1,12 @@
extends Action
class_name ActionWait
@export var wait_time : float
var wait_time_left : float
func run(character: Character) -> int:
wait_time_left += get_physics_process_delta_time()
if wait_time_left >= wait_time:
wait_time_left = 0
return SUCCESS
return RUNNING

@ -1,4 +1,5 @@
extends ActionWithTarget
class_name ActionMoveToTarget
func execute(character: Character, target: Character) -> int:
var dir = target.pos2D() - character.pos2D()

@ -0,0 +1,5 @@
extends AI
class_name BulletAI
func _ready():
pass

@ -0,0 +1,5 @@
extends AI
class_name MonsterAI
func _ready():
pass

@ -1,6 +1,8 @@
extends Node3D
class_name PlayerAction
@onready var test_bullet = load("res://config/character/bullet01.tres")
@onready var character = (get_owner() as Character)
@onready var status = (%Status as Status)
@onready var combo = (%Combo as Combo)
@ -17,6 +19,8 @@ func check_action_pressed(key:String) -> bool:
match key:
"weapon_pre":combo.weapon_index_change(-1)
"weapon_next":combo.weapon_index_change(1)
"test_1":
Global.character_mgr.create_character(test_bullet,character.team(),character.pos())
_:return false
return true

@ -15,7 +15,7 @@ func _process(delta):
else:play();
func cast_skill(cfg:SkillCfg,cast_dir:Vector2):
cancel_skill()
break_skill()
if cast_dir.length() == 0:
cast_dir = Vector2.RIGHT if status.is_right else Vector2.LEFT
if !cfg.free_lock and status.target:
@ -41,7 +41,7 @@ func cast_skill(cfg:SkillCfg,cast_dir:Vector2):
else:
print("技能animation不存在",animation_name)
func cancel_skill():
func break_skill():
stop()
status.speed_up_rate = 0
status.skill_move_speed = 0
@ -54,6 +54,9 @@ func cancel_skill():
status.skill_attack_index = 0
status.skill_attack_effect_index = 0
effect.release_effect()
func cancel_skill():
break_skill()
view.reset()
func on_attack_miss():

@ -171,6 +171,8 @@ func clone(target:AnimatedSprite3D):
target.scale.x = scale.x
func play_animation(animation_name:String):
if not sprite_frames.has_animation(animation_name):
return
if animation_name == animation:
frame = 0
frame_progress = 0

@ -43,8 +43,8 @@ func target_pos_lerp(index:int,delta:float,delta_scale:float):
var weight = max(delta * delta_scale,weight_min)
target_pos_now[index] = lerp(target_pos_now[index], target_pos[index], weight)
func on_character_create(id:int,team:Enum.ETeam,pos:Vector3):
if team == Enum.ETeam.Player:
func on_character_create(id:int,is_player:bool,pos:Vector3):
if is_player:
target = id
on_character_pos_changed(id,pos)
on_character_hit_floor(id,pos)

@ -22,13 +22,12 @@ func on_level_loading_end():
var player = get_player()
if player:player.remove_buff("freeze")
func create_character(cfg:CharacterCfg,team:Enum.ETeam,pos:Vector3):
func create_character(cfg:CharacterCfg,team:Enum.ETeam,pos:Vector3)->Character:
var characterNode:Node
match cfg.type:
Enum.ECharacterType.Player:
characterNode = ResourceManager.scene_player.instantiate()
Enum.ECharacterType.Monster:
characterNode = ResourceManager.scene_monster.instantiate()
Enum.ECharacterType.Player:characterNode = ResourceManager.scene_player.instantiate()
Enum.ECharacterType.Monster:characterNode = ResourceManager.scene_monster.instantiate()
Enum.ECharacterType.Bullet:characterNode = ResourceManager.scene_bullet.instantiate()
add_child(characterNode)
characterNode.name = cfg.name
var character = characterNode as Character
@ -37,9 +36,11 @@ func create_character(cfg:CharacterCfg,team:Enum.ETeam,pos:Vector3):
character.init(character_idx,cfg,team)
character.set_material(ResourceManager.material_character.duplicate(),ResourceManager.material_character_sub.duplicate())
character.set_pos(pos)
SignalManager.character_create.emit(character_idx,team,character.ui_pos())
if cfg.type == Enum.ECharacterType.Player:player_id = character_idx
var is_player = cfg.type == Enum.ECharacterType.Player
SignalManager.character_create.emit(character_idx,is_player,character.ui_pos())
if is_player:player_id = character_idx
character.init_after()
return character
func destroy_character(id:int):
if not id in character_map:

@ -3,6 +3,7 @@ extends Node3D
#==scene==
var scene_player = load("res://scene/character/player.tscn")
var scene_monster = load("res://scene/character/monster.tscn")
var scene_bullet = load("res://scene/character/bullet.tscn")
#==material==
var material_character = load("res://render/material/character.tres")

@ -24,8 +24,8 @@ func _process(delta):
var headbar_meta = headbar_map[k] as HeadbarMeta
headbar_meta.headbar.position = camera.get_screen_pos(headbar_meta.pos)
func on_character_create(id:int,team:Enum.ETeam,pos:Vector3):
if team == Enum.ETeam.Player:
func on_character_create(id:int,is_player:bool,pos:Vector3):
if not is_player:
return
var new_headbar_meta = HeadbarMeta.new()
new_headbar_meta.pos = pos

Loading…
Cancel
Save