removing broken ABC and refactoring enemy movement
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 19s
Create tag and build when new code gets to main / Export (push) Successful in 10m2s

This commit is contained in:
2026-01-17 19:55:51 +01:00
parent f7705a6d57
commit 7c74b8b5e5
24 changed files with 211 additions and 286 deletions

View File

@@ -1,18 +0,0 @@
using Godot;
using System;
[GlobalClass]
public partial class EnemyInitInputs : Resource
{
[Export(PropertyHint.Range, "0,10,0.1,or_greater")]
public float Speed;
public EnemyInitInputs()
{
Speed = 5.0f;
}
public EnemyInitInputs(float speed)
{
Speed = speed;
}
}

View File

@@ -1 +0,0 @@
uid://b2vdwkiqauhk3

View File

@@ -1,90 +0,0 @@
using Godot;
using System;
using System.Linq;
using Movementtests.interfaces;
[GlobalClass]
public partial class FirstEnemy : CharacterBody3D, IDamageable, IDamageMaker, IHealthable, IKillable
{
[Export]
public Node3D Target { get; set; }
[Export]
public EnemyInitInputs Inputs;
[Export]
public RDamage GetDamageDealt { get; set; }
[Export]
public CHealth CHealth { get; set; }
[Export]
public CDamageable CDamage { get; set; }
[Export]
public RDeathEffect[] DeathEffects { get; set; }
private RayCast3D _wallInFrontRayCast;
private Area3D _damageBox;
public override void _Ready()
{
_wallInFrontRayCast = GetNode<RayCast3D>("WallInFrontRayCast");
_damageBox = GetNode<Area3D>("DamageBox");
_damageBox.BodyEntered += OnDamageBoxTriggered;
CDamage.DamageTaken += ReduceHealth;
CHealth.Dead += Kill;
}
public override void _PhysicsProcess(double delta)
{
var target = Target.GlobalPosition;
var direction = (target - GlobalPosition).Normalized();
var targetPlane = new Vector3(target.X, GlobalPosition.Y, target.Z);
LookAt(targetPlane);
var velocity = Velocity;
velocity.X = direction.X * Inputs.Speed;
velocity.Z = direction.Z * Inputs.Speed;
if (_wallInFrontRayCast.IsColliding())
velocity.Y = Inputs.Speed;
else if (!IsOnFloor())
velocity += GetGravity() * (float)delta;
Velocity = velocity;
MoveAndSlide();
}
public void OnDamageBoxTriggered(Node3D body)
{
if(body is IDamageable damageable) damageable.TakeDamage(GetDamageDealt);
}
public float TakeDamage(RDamage damage)
{
return CDamage.TakeDamage(damage);
}
public float CurrentHealth
{
get => CHealth.CurrentHealth;
set => CHealth.CurrentHealth = value;
}
public void ReduceHealth(float amount)
{
CHealth.ReduceHealth(amount);
}
public void Kill()
{
foreach (var killable in DeathEffects.ToIKillables())
{
killable.Kill();
}
QueueFree();
}
}

View File

@@ -1 +0,0 @@
uid://bn7sc6id7n166

View File

@@ -1,26 +1,13 @@
[gd_scene load_steps=19 format=3 uid="uid://dxt0e2ugmttqq"]
[gd_scene load_steps=17 format=3 uid="uid://dxt0e2ugmttqq"]
[ext_resource type="Script" uid="uid://bn7sc6id7n166" path="res://scenes/enemies/first_enemy/FirstEnemy.cs" id="1_4yfjf"]
[ext_resource type="Script" uid="uid://b2vdwkiqauhk3" path="res://scenes/enemies/first_enemy/EnemyInitInputs.cs" id="2_42xu3"]
[ext_resource type="Script" uid="uid://bn7sc6id7n166" path="res://scenes/enemies/Enemy.cs" id="1_r6506"]
[ext_resource type="Resource" uid="uid://otfc2snh8umc" path="res://scenes/enemies/first_enemy/first_enemy_damage.tres" id="2_6d4gl"]
[ext_resource type="Script" uid="uid://bjwrpv3jpsc1e" path="res://scenes/health/CHealth.cs" id="2_gsmti"]
[ext_resource type="Script" uid="uid://b6y3ugfydvch0" path="res://resource_definitions/RDamageModifier.cs" id="2_r3cnf"]
[ext_resource type="Script" uid="uid://jitubgv6judn" path="res://resource_definitions/RDamage.cs" id="3_1tw73"]
[ext_resource type="Script" uid="uid://b4cwruitopcee" path="res://resource_definitions/RDeathEffect.cs" id="3_onjoj"]
[ext_resource type="Script" uid="uid://baiapod3csndf" path="res://resource_definitions/RHealth.cs" id="3_pvbr4"]
[ext_resource type="Script" uid="uid://b0u23nkpaimyc" path="res://scenes/damage/CDamageable.cs" id="7_1tw73"]
[sub_resource type="Resource" id="Resource_66m7n"]
script = ExtResource("2_42xu3")
Speed = 2.0
metadata/_custom_type_script = "uid://b2vdwkiqauhk3"
[sub_resource type="Resource" id="Resource_a6xb8"]
script = ExtResource("3_1tw73")
metadata/_custom_type_script = "uid://jitubgv6judn"
[sub_resource type="Resource" id="Resource_7gyf3"]
script = ExtResource("3_onjoj")
metadata/_custom_type_script = "uid://b4cwruitopcee"
[ext_resource type="PackedScene" uid="uid://dbr7ioio158ew" path="res://scenes/movement/CGroundedMovement.tscn" id="7_qyswd"]
[ext_resource type="Script" uid="uid://dtpxijlnb2c5" path="res://resource_definitions/RMovement.cs" id="8_6d4gl"]
[sub_resource type="Resource" id="Resource_r3cnf"]
script = ExtResource("3_pvbr4")
@@ -30,6 +17,11 @@ metadata/_custom_type_script = "uid://baiapod3csndf"
script = ExtResource("2_r3cnf")
metadata/_custom_type_script = "uid://b6y3ugfydvch0"
[sub_resource type="Resource" id="Resource_s01ng"]
script = ExtResource("8_6d4gl")
Speed = 3.0
metadata/_custom_type_script = "uid://dtpxijlnb2c5"
[sub_resource type="CapsuleShape3D" id="CapsuleShape3D_62kkh"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_3uydm"]
@@ -46,15 +38,15 @@ albedo_color = Color(0.06469653, 0.06469653, 0.06469653, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_4yfjf"]
size = Vector3(1, 2, 2)
[node name="FirstEnemy" type="CharacterBody3D" node_paths=PackedStringArray("CHealth", "CDamage")]
[node name="FirstEnemy" type="CharacterBody3D" node_paths=PackedStringArray("CHealth", "CDamage", "CMovement")]
collision_layer = 16
collision_mask = 273
script = ExtResource("1_4yfjf")
Inputs = SubResource("Resource_66m7n")
GetDamageDealt = SubResource("Resource_a6xb8")
script = ExtResource("1_r6506")
GetDamageDealt = ExtResource("2_6d4gl")
CHealth = NodePath("CHealth")
CDamage = NodePath("CDamageable")
DeathEffects = Array[Object]([SubResource("Resource_7gyf3")])
CMovement = NodePath("CGroundedMovement")
DeathEffects = Array[Object]([])
[node name="CHealth" type="Node" parent="."]
script = ExtResource("2_gsmti")
@@ -66,6 +58,10 @@ script = ExtResource("7_1tw73")
DamageModifiers = Array[Object]([SubResource("Resource_qj0ob")])
metadata/_custom_type_script = "uid://b0u23nkpaimyc"
[node name="CGroundedMovement" parent="." node_paths=PackedStringArray("WallInFrontRayCast") instance=ExtResource("7_qyswd")]
RMovement = SubResource("Resource_s01ng")
WallInFrontRayCast = NodePath("../WallInFrontRayCast")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0)
shape = SubResource("CapsuleShape3D_62kkh")