hit box 配置
parent
654b41d7eb
commit
9bc7c7d28c
@ -0,0 +1,14 @@
|
|||||||
|
[gd_resource type="Resource" script_class="AttackCfg" load_steps=2 format=3 uid="uid://bsqk3q6mccllg"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://script/config/attack_cfg.gd" id="1_wn06b"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("1_wn06b")
|
||||||
|
damage_rate = 1.0
|
||||||
|
break_level = 0
|
||||||
|
hit_back_speed = 0.0
|
||||||
|
hit_back_duration = 0.0
|
||||||
|
hit_up_speed = 0.0
|
||||||
|
hit_up_duration = 0.0
|
||||||
|
pause_time = 0.0
|
||||||
|
is_floating = false
|
||||||
@ -0,0 +1,14 @@
|
|||||||
|
[gd_resource type="Resource" script_class="CharacterCfg" load_steps=3 format=3 uid="uid://dmfh54jffhx28"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" path="res://script/config/character_cfg.gd" id="1_wkjce"]
|
||||||
|
[ext_resource type="SpriteFrames" uid="uid://criqnimi5dara" path="res://resource/animation/character/monster02_move.aseprite" id="2_h60bf"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("1_wkjce")
|
||||||
|
name = "monster02"
|
||||||
|
type = 0
|
||||||
|
sprite_frames = ExtResource("2_h60bf")
|
||||||
|
sprite_harf_height = 0
|
||||||
|
sprite_width = 0
|
||||||
|
hp_max = 0.0
|
||||||
|
shield_max = 0.0
|
||||||
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 8.6 KiB |
@ -1,19 +1,18 @@
|
|||||||
[gd_scene load_steps=5 format=3 uid="uid://b85fy0wfgr4gs"]
|
[gd_scene load_steps=4 format=3 uid="uid://uvv575nd76ji"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://vnkcr04hevna" path="res://scene/character/character.tscn" id="1_bny0p"]
|
[ext_resource type="PackedScene" uid="uid://vnkcr04hevna" path="res://scene/character/character.tscn" id="1_bny0p"]
|
||||||
[ext_resource type="SpriteFrames" uid="uid://0yuryfn6dc2v" path="res://resource/animation/character/hero01_long_skill01.aseprite" id="2_cg8l2"]
|
[ext_resource type="Script" path="res://script/character/player/combo.gd" id="2_6xb1m"]
|
||||||
[ext_resource type="Script" path="res://script/character/player/input.gd" id="2_qkra8"]
|
[ext_resource type="Script" path="res://script/character/player/player_input.gd" id="2_d5j0i"]
|
||||||
[ext_resource type="Script" path="res://script/character/player/combo.gd" id="4_jsefx"]
|
|
||||||
|
|
||||||
[node name="Character" instance=ExtResource("1_bny0p")]
|
[node name="Character" instance=ExtResource("1_bny0p")]
|
||||||
|
|
||||||
[node name="View" parent="." index="2"]
|
[node name="Status" parent="." index="1"]
|
||||||
sprite_frames = ExtResource("2_cg8l2")
|
speed_up_rate = 0.0
|
||||||
animation = &"long_flash"
|
skill_move_speed = 4.0
|
||||||
|
|
||||||
[node name="Input" type="Node3D" parent="." index="5"]
|
|
||||||
script = ExtResource("2_qkra8")
|
|
||||||
|
|
||||||
[node name="Combo" type="Node3D" parent="." index="6"]
|
[node name="Combo" type="Node3D" parent="." index="6"]
|
||||||
unique_name_in_owner = true
|
unique_name_in_owner = true
|
||||||
script = ExtResource("4_jsefx")
|
script = ExtResource("2_6xb1m")
|
||||||
|
|
||||||
|
[node name="PlayerInput" type="Node3D" parent="." index="7"]
|
||||||
|
script = ExtResource("2_d5j0i")
|
||||||
|
|||||||
@ -0,0 +1,42 @@
|
|||||||
|
extends Node3D
|
||||||
|
class_name Battle
|
||||||
|
|
||||||
|
@onready var character = (get_owner() as Character)
|
||||||
|
@onready var status = (%Status as Status)
|
||||||
|
|
||||||
|
class HitInfo:
|
||||||
|
var form : int
|
||||||
|
var to : int
|
||||||
|
var dir : Vector2
|
||||||
|
var attack : AttackCfg
|
||||||
|
|
||||||
|
var hit_info_list = [] #命中信息
|
||||||
|
|
||||||
|
func attack():
|
||||||
|
var attack_list = status.skill_cfg.attack_list
|
||||||
|
if !attack_list:
|
||||||
|
print("未配置技能攻击",status.skill_cfg)
|
||||||
|
var attack_index = status.skill_attack_index
|
||||||
|
if attack_index >= len(attack_list):
|
||||||
|
attack_index = len(attack_list) - 1
|
||||||
|
var attack = attack_list[attack_index]
|
||||||
|
var enemy_list = character.manager().get_enemy_list(character.id())
|
||||||
|
for enemy in enemy_list:
|
||||||
|
var pos_dir = enemy.pos()-character.pos()
|
||||||
|
var distance = pos_dir.length()
|
||||||
|
#test
|
||||||
|
if (distance < 1):
|
||||||
|
var hit_info = HitInfo.new()
|
||||||
|
hit_info.form = character.id()
|
||||||
|
hit_info.to = enemy.id()
|
||||||
|
hit_info.dir = status.skill_dir
|
||||||
|
hit_info.attack = attack
|
||||||
|
hit_info_list.append(hit_info)
|
||||||
|
|
||||||
|
func _process(delta):
|
||||||
|
for hit_info in hit_info_list:
|
||||||
|
settle(hit_info)
|
||||||
|
hit_info_list.clear()
|
||||||
|
|
||||||
|
func settle(hit_info:HitInfo):
|
||||||
|
print(hit_info.attack)
|
||||||
@ -1,4 +1,5 @@
|
|||||||
extends Node
|
extends Node3D
|
||||||
|
class_name PlayerInput
|
||||||
|
|
||||||
@onready var status = (%Status as Status)
|
@onready var status = (%Status as Status)
|
||||||
@onready var combo = (%Combo as Combo)
|
@onready var combo = (%Combo as Combo)
|
||||||
@ -0,0 +1,17 @@
|
|||||||
|
@tool
|
||||||
|
extends Resource
|
||||||
|
|
||||||
|
class_name AttackCfg
|
||||||
|
|
||||||
|
#命中框信息
|
||||||
|
|
||||||
|
#数值信息
|
||||||
|
@export var damage_rate : float = 1 #伤害系数
|
||||||
|
@export var break_level : int #硬直等级
|
||||||
|
@export var hit_back_speed : float #击退速度
|
||||||
|
@export var hit_back_duration : float #击退持续时间
|
||||||
|
@export var hit_up_speed : float #击飞速度
|
||||||
|
@export var hit_up_duration : float #击飞持续时间
|
||||||
|
@export var pause_time : float #卡帧时间
|
||||||
|
@export var is_floating : bool #是否浮空技
|
||||||
|
|
||||||
@ -1,11 +1,13 @@
|
|||||||
extends Node3D
|
extends Node3D
|
||||||
|
|
||||||
@export var player:CharacterCfg
|
@export var player:CharacterCfg
|
||||||
|
@export var test_monster:CharacterCfg
|
||||||
|
|
||||||
@onready var character_manager = (%CharacterManager as CharacterManager)
|
@onready var character_manager = (%CharacterManager as CharacterManager)
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
character_manager.create_character(player)
|
character_manager.create_character(player,Enum.ETeam.Player)
|
||||||
|
character_manager.create_character(test_monster,Enum.ETeam.Monster)
|
||||||
|
|
||||||
func _process(delta):
|
func _process(delta):
|
||||||
pass
|
pass
|
||||||
|
|||||||
Loading…
Reference in New Issue