flying knockback as well
Some checks failed
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) Has been cancelled

This commit is contained in:
2026-01-18 16:58:23 +01:00
parent 35b9ea383c
commit eb1c7f78fa
8 changed files with 33 additions and 12 deletions

View File

@@ -5,23 +5,27 @@ using System;
public partial class RMovement : Resource
{
[Export(PropertyHint.Range, "0,10,0.1,or_greater")]
public float Speed;
public float Speed { get; set;}
[Export(PropertyHint.Range, "0,10,0.1,or_greater")]
public float Acceleration;
public float Acceleration { get; set;}
[Export(PropertyHint.Range, "0,10,0.1,or_greater")]
public float GravityModifier { get; set;}
[Export(PropertyHint.Range, "0,20,1,or_greater")]
public float TargetHeight;
public float TargetHeight { get; set;}
public RMovement()
{
Speed = 3.0f;
Acceleration = 1.0f;
GravityModifier = 1.0f;
TargetHeight = 10.0f;
}
public RMovement(float speed, float acceleration, float targetHeight)
public RMovement(float speed, float acceleration, float gravityModifier, float targetHeight)
{
Speed = speed;
Acceleration = acceleration;
GravityModifier = gravityModifier;
TargetHeight = targetHeight;
}
}

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=18 format=3 uid="uid://cmlud1hwkd6sv"]
[gd_scene load_steps=20 format=3 uid="uid://cmlud1hwkd6sv"]
[ext_resource type="Script" uid="uid://bn7sc6id7n166" path="res://scenes/enemies/Enemy.cs" id="1_q8l7o"]
[ext_resource type="Script" uid="uid://b6y3ugfydvch0" path="res://resource_definitions/RDamageModifier.cs" id="2_1bsgx"]
@@ -9,6 +9,8 @@
[ext_resource type="PackedScene" uid="uid://dmw5ibwrb483f" path="res://scenes/movement/CFlyingMovement.tscn" id="7_vaeds"]
[ext_resource type="Script" uid="uid://dtpxijlnb2c5" path="res://resource_definitions/RMovement.cs" id="8_on7rt"]
[ext_resource type="Script" uid="uid://b0u23nkpaimyc" path="res://scenes/damage/CDamageable.cs" id="8_uotso"]
[ext_resource type="PackedScene" uid="uid://bctpe34ddamg5" path="res://scenes/knockback/CKnockback.tscn" id="10_dejyg"]
[ext_resource type="Resource" uid="uid://dt7a1io5o0b8s" path="res://scenes/enemies/flying_enemy/flying_enemy_knockback.tres" id="11_mpa2u"]
[sub_resource type="Resource" id="Resource_jnv07"]
script = ExtResource("2_1bsgx")
@@ -41,18 +43,20 @@ albedo_color = Color(0.06469653, 0.06469653, 0.06469653, 1)
[sub_resource type="BoxShape3D" id="BoxShape3D_4yfjf"]
size = Vector3(1, 1, 1.5)
[node name="FlyingEnemy" type="CharacterBody3D" node_paths=PackedStringArray("CHealth", "CDamage", "CMovement")]
[node name="FlyingEnemy" type="CharacterBody3D" node_paths=PackedStringArray("CHealth", "CDamage", "CKnockback", "CMovement")]
collision_layer = 16
collision_mask = 273
motion_mode = 1
script = ExtResource("1_q8l7o")
CHealth = NodePath("CHealth")
RHealth = ExtResource("2_ma2bq")
DeathEffects = Array[Object]([])
CDamage = NodePath("CDamageable")
RDamage = ExtResource("2_on7rt")
CKnockback = NodePath("CKnockback")
RKnockback = ExtResource("11_mpa2u")
CMovement = NodePath("CFlyingMovement")
RMovement = ExtResource("4_dejyg")
DeathEffects = Array[Object]([])
[node name="CHealth" type="Node" parent="."]
script = ExtResource("4_ys4jv")
@@ -68,6 +72,9 @@ metadata/_custom_type_script = "uid://b0u23nkpaimyc"
RMovement = SubResource("Resource_on7rt")
TerrainCollision = 256
[node name="CKnockback" parent="." instance=ExtResource("10_dejyg")]
RKnockback = ExtResource("11_mpa2u")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("SphereShape3D_b46rq")

View File

@@ -0,0 +1,8 @@
[gd_resource type="Resource" script_class="RKnockback" load_steps=2 format=3 uid="uid://dt7a1io5o0b8s"]
[ext_resource type="Script" uid="uid://b44cse62qru7j" path="res://resource_definitions/RKnockback.cs" id="1_yq03x"]
[resource]
script = ExtResource("1_yq03x")
Modifier = 10.0
metadata/_custom_type_script = "uid://b44cse62qru7j"

View File

@@ -5,5 +5,6 @@
[resource]
script = ExtResource("1_3yq0a")
Speed = 3.0
Acceleration = 5.0
TargetHeight = 10.0
metadata/_custom_type_script = "uid://dtpxijlnb2c5"

View File

@@ -4,5 +4,5 @@
[resource]
script = ExtResource("1_vdia8")
Modifier = 100.0
Modifier = 10.0
metadata/_custom_type_script = "uid://b44cse62qru7j"

View File

@@ -5,5 +5,6 @@
[resource]
script = ExtResource("1_hsy8g")
Speed = 5.0
Acceleration = 10.0
Acceleration = 3.0
GravityModifier = 5.0
metadata/_custom_type_script = "uid://dtpxijlnb2c5"

View File

@@ -27,7 +27,7 @@ public partial class CFlyingMovement : Node3D, IMoveable
// Check if we have a direct line of sight to the player
if (!_movingToDesiredHeight)
{
velocity = direction * RMovement.Speed;
velocity = velocity.Lerp(direction * RMovement.Speed, (float) inputs.delta * RMovement.Acceleration);
var query = PhysicsRayQueryParameters3D.Create(GlobalPosition, target, TerrainCollision);
var result = spaceState.IntersectRay(query);
@@ -39,7 +39,7 @@ public partial class CFlyingMovement : Node3D, IMoveable
}
else
{
velocity = _randomDirection * RMovement.Speed;
velocity = velocity.Lerp(_randomDirection * RMovement.Speed, (float) inputs.delta * RMovement.Acceleration);
var groundQuery = PhysicsRayQueryParameters3D.Create(GlobalPosition, GlobalPosition+Vector3.Down*RMovement.TargetHeight, TerrainCollision);
var groundResult = spaceState.IntersectRay(groundQuery);

View File

@@ -27,7 +27,7 @@ public partial class CGroundedMovement : Node3D, IMoveable
if (WallInFrontRayCast.IsColliding())
velocity.Y = RMovement.Speed;
else if (!inputs.isOnFloor)
velocity += inputs.gravity * (float)inputs.delta;
velocity += inputs.gravity * (float)inputs.delta * RMovement.GravityModifier;
return velocity;
}