buff系统 受击动画触发
parent
9bc7c7d28c
commit
0bc33aec98
@ -1,14 +1,16 @@
|
||||
[gd_resource type="Resource" script_class="CharacterCfg" load_steps=3 format=3 uid="uid://dmfh54jffhx28"]
|
||||
[gd_resource type="Resource" script_class="CharacterCfg" load_steps=4 format=3 uid="uid://dmfh54jffhx28"]
|
||||
|
||||
[ext_resource type="Resource" uid="uid://dx54fjf5t0uu8" path="res://config/character_move/normal.tres" id="1_hjl2t"]
|
||||
[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
|
||||
type = 1
|
||||
sprite_frames = ExtResource("2_h60bf")
|
||||
sprite_harf_height = 0
|
||||
sprite_width = 0
|
||||
hp_max = 0.0
|
||||
sprite_harf_height = 26
|
||||
sprite_width = 16
|
||||
move = ExtResource("1_hjl2t")
|
||||
hp_max = 100.0
|
||||
shield_max = 0.0
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://b67jri5xptx65"]
|
||||
[gd_scene load_steps=2 format=3 uid="uid://c0sqb3w2tjjym"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://vnkcr04hevna" path="res://scene/character/character.tscn" id="1_c5mtw"]
|
||||
[ext_resource type="PackedScene" uid="uid://vnkcr04hevna" path="res://scene/character/character.tscn" id="1_eshlr"]
|
||||
|
||||
[node name="Character" instance=ExtResource("1_c5mtw")]
|
||||
[node name="Character" instance=ExtResource("1_eshlr")]
|
||||
|
||||
@ -1,18 +1,15 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://uvv575nd76ji"]
|
||||
[gd_scene load_steps=4 format=3 uid="uid://bw48w3ehhjvg7"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://vnkcr04hevna" path="res://scene/character/character.tscn" id="1_bny0p"]
|
||||
[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"]
|
||||
[ext_resource type="PackedScene" uid="uid://vnkcr04hevna" path="res://scene/character/character.tscn" id="1_pot50"]
|
||||
[ext_resource type="Script" path="res://script/character/player/combo.gd" id="2_i44w8"]
|
||||
[ext_resource type="Script" path="res://script/character/player/player_input.gd" id="3_n07go"]
|
||||
|
||||
[node name="Character" instance=ExtResource("1_bny0p")]
|
||||
[node name="Character" instance=ExtResource("1_pot50")]
|
||||
|
||||
[node name="Status" parent="." index="1"]
|
||||
speed_up_rate = 0.0
|
||||
skill_move_speed = 4.0
|
||||
|
||||
[node name="Combo" type="Node3D" parent="." index="6"]
|
||||
[node name="Combo" type="Node3D" parent="." index="7"]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("2_6xb1m")
|
||||
script = ExtResource("2_i44w8")
|
||||
|
||||
[node name="PlayerInput" type="Node3D" parent="." index="7"]
|
||||
script = ExtResource("2_d5j0i")
|
||||
[node name="PlayerInput" type="Node3D" parent="." index="8"]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("3_n07go")
|
||||
|
||||
@ -0,0 +1,49 @@
|
||||
extends Node3D
|
||||
class_name Buff
|
||||
|
||||
@onready var character = (get_owner() as Character)
|
||||
@onready var status = (%Status as Status)
|
||||
|
||||
class BuffInfo:
|
||||
var name : String
|
||||
var duration : float
|
||||
|
||||
var buff_map = {} #命中信息
|
||||
|
||||
func _process(delta):
|
||||
for buff_name in buff_map:
|
||||
var buff_info = buff_map[buff_name]
|
||||
if buff_info.duration == -1:
|
||||
trigger_buff_effect(buff_info.name,"update")
|
||||
else:
|
||||
buff_info.duration -= delta
|
||||
if buff_info.duration <= 0:
|
||||
trigger_buff_effect(buff_info.name,"end")
|
||||
buff_map.erase(buff_name)
|
||||
else:
|
||||
trigger_buff_effect(buff_info.name,"update")
|
||||
|
||||
func trigger_buff_effect(buff_name:String,trigger_name:String):
|
||||
var function_name = "on_%s_%s" % [trigger_name,buff_name]
|
||||
if has_method(function_name):
|
||||
call(function_name)
|
||||
|
||||
func has_buff(buff_name:String) -> bool:
|
||||
return buff_name in buff_map
|
||||
|
||||
func add_buff(buff_name:String,duration:float):
|
||||
if buff_name in buff_map:
|
||||
buff_map[buff_name].duration = duration
|
||||
else:
|
||||
var new_buff = BuffInfo.new()
|
||||
new_buff.name = buff_name
|
||||
new_buff.duration = duration
|
||||
buff_map[buff_name] = new_buff
|
||||
trigger_buff_effect(buff_name,"start")
|
||||
|
||||
#==具体实现==
|
||||
func on_end_hit_back():status.hit_back_speed = 0
|
||||
func on_end_hit_up():status.hit_up_speed = 0
|
||||
func on_start_stagger():status.is_stagger = true
|
||||
func on_end_stagger():status.is_stagger = false
|
||||
func on_end_stun():status.is_stun = false
|
||||
Loading…
Reference in New Issue