master
parent
c845e7ac21
commit
271eb69a39
@ -0,0 +1,23 @@
|
|||||||
|
[gd_resource type="Resource" script_class="CharacterCfg" load_steps=7 format=3 uid="uid://b7e0vtpo7ox58"]
|
||||||
|
|
||||||
|
[ext_resource type="Resource" uid="uid://dx54fjf5t0uu8" path="res://config/character_move/normal.tres" id="1_xjqmq"]
|
||||||
|
[ext_resource type="Resource" uid="uid://815to6lq2qfs" path="res://config/character_mp/player.tres" id="2_lvwof"]
|
||||||
|
[ext_resource type="Script" path="res://script/config/character_cfg.gd" id="3_wmpd1"]
|
||||||
|
[ext_resource type="Resource" uid="uid://dlaekoamystx3" path="res://config/character_shield/normal.tres" id="4_wsj1w"]
|
||||||
|
[ext_resource type="SpriteFrames" uid="uid://cwe8setoi6bd" path="res://resource/animation/character/hero01_move.aseprite" id="5_t652g"]
|
||||||
|
[ext_resource type="Resource" uid="uid://cac6mk6g078vn" path="res://config/character_stun/normal.tres" id="6_sxxop"]
|
||||||
|
|
||||||
|
[resource]
|
||||||
|
script = ExtResource("3_wmpd1")
|
||||||
|
name = "hero01"
|
||||||
|
type = 3
|
||||||
|
sprite_frames = ExtResource("5_t652g")
|
||||||
|
sprite_height = 50
|
||||||
|
sprite_width = 16
|
||||||
|
move = ExtResource("1_xjqmq")
|
||||||
|
shield = ExtResource("4_wsj1w")
|
||||||
|
stun = ExtResource("6_sxxop")
|
||||||
|
mp = ExtResource("2_lvwof")
|
||||||
|
hp_max = 100.0
|
||||||
|
attack = 10.0
|
||||||
|
sub_character_auto_create = false
|
||||||
@ -0,0 +1,16 @@
|
|||||||
|
[gd_scene load_steps=4 format=3 uid="uid://bnb3oaiijehrn"]
|
||||||
|
|
||||||
|
[ext_resource type="PackedScene" uid="uid://8rcvw1vnjcf7" path="res://scene/character/character.tscn" id="1_gvr0p"]
|
||||||
|
[ext_resource type="Script" path="res://script/character/ai/soul_ai.gd" id="2_exf18"]
|
||||||
|
|
||||||
|
[sub_resource type="Curve" id="Curve_j362u"]
|
||||||
|
min_value = -1.0
|
||||||
|
max_value = 4.0
|
||||||
|
_data = [Vector2(0, -1), 0.0, 0.0, 0, 0, Vector2(1, 4), 0.0, 0.0, 0, 0]
|
||||||
|
point_count = 2
|
||||||
|
|
||||||
|
[node name="Character" instance=ExtResource("1_gvr0p")]
|
||||||
|
|
||||||
|
[node name="SoulAI" type="Node3D" parent="." index="11"]
|
||||||
|
script = ExtResource("2_exf18")
|
||||||
|
follow_speed_curve = SubResource("Curve_j362u")
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
[gd_scene load_steps=2 format=3 uid="uid://dj2bag42rmhvq"]
|
||||||
|
|
||||||
|
[ext_resource type="Texture2D" uid="uid://xtipei54v35i" path="res://render/texture/decal/readiness_monster.png" id="1_hfi0a"]
|
||||||
|
|
||||||
|
[node name="ReadinessHero" type="Decal"]
|
||||||
|
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.358925, 0)
|
||||||
|
size = Vector3(1, 1, 1)
|
||||||
|
texture_albedo = ExtResource("1_hfi0a")
|
||||||
|
normal_fade = 0.1
|
||||||
|
cull_mask = 1
|
||||||
@ -0,0 +1,47 @@
|
|||||||
|
extends Node3D
|
||||||
|
class_name SoulAI
|
||||||
|
|
||||||
|
@export var follow_speed_curve: Curve
|
||||||
|
@export var follow_dist_max: int = 5
|
||||||
|
|
||||||
|
@onready var character: Character = (get_owner() as Character)
|
||||||
|
@onready var status: Status = (%Status as Status)
|
||||||
|
|
||||||
|
|
||||||
|
class SkillOrder:
|
||||||
|
var skill_name: String
|
||||||
|
var cast_dir: Vector2
|
||||||
|
var target: int
|
||||||
|
|
||||||
|
var skill_order_list: Array[SkillOrder] = []
|
||||||
|
var owner_character: Character
|
||||||
|
|
||||||
|
|
||||||
|
func _process(delta) -> void:
|
||||||
|
owner_character = Global.character_mgr.get_character(status.owner_id)
|
||||||
|
if not owner_character:
|
||||||
|
Global.character_mgr.destroy_character(character.id())
|
||||||
|
return
|
||||||
|
update_skill()
|
||||||
|
update_move()
|
||||||
|
|
||||||
|
|
||||||
|
func update_skill() -> void:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
func update_move() -> void:
|
||||||
|
if status.is_skill_running:
|
||||||
|
return
|
||||||
|
var owner_pos: Vector3 = owner_character.pos()
|
||||||
|
var radius_add: float = owner_character.radius() + character.radius()
|
||||||
|
var target_pos: Vector3 = owner_pos + Vector3(-1 if owner_character.is_right() else 1, 0, 0) * radius_add * 1.1
|
||||||
|
var dir: Vector3 = target_pos - character.pos()
|
||||||
|
var dir_2d: Vector2 = Vector2(dir.x, dir.z)
|
||||||
|
var dist: float = dir_2d.length()
|
||||||
|
if dist > follow_dist_max:
|
||||||
|
character.set_pos(target_pos)
|
||||||
|
return
|
||||||
|
var dist_rate = clamp(dist / follow_dist_max, 0, 1)
|
||||||
|
status.speed_up_rate = follow_speed_curve.sample(dist_rate)
|
||||||
|
character.move_to(dir_2d)
|
||||||
Loading…
Reference in New Issue