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