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="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/input.gd" id="2_qkra8"]
|
||||
[ext_resource type="Script" path="res://script/character/player/combo.gd" id="4_jsefx"]
|
||||
[ext_resource type="Script" path="res://script/character/player/combo.gd" id="2_6xb1m"]
|
||||
[ext_resource type="Script" path="res://script/character/player/player_input.gd" id="2_d5j0i"]
|
||||
|
||||
[node name="Character" instance=ExtResource("1_bny0p")]
|
||||
|
||||
[node name="View" parent="." index="2"]
|
||||
sprite_frames = ExtResource("2_cg8l2")
|
||||
animation = &"long_flash"
|
||||
|
||||
[node name="Input" type="Node3D" parent="." index="5"]
|
||||
script = ExtResource("2_qkra8")
|
||||
[node name="Status" parent="." index="1"]
|
||||
speed_up_rate = 0.0
|
||||
skill_move_speed = 4.0
|
||||
|
||||
[node name="Combo" type="Node3D" parent="." index="6"]
|
||||
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 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
|
||||
|
||||
@export var player:CharacterCfg
|
||||
@export var test_monster:CharacterCfg
|
||||
|
||||
@onready var character_manager = (%CharacterManager as CharacterManager)
|
||||
|
||||
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):
|
||||
pass
|
||||
|
||||
Loading…
Reference in New Issue