Further Tests & Progress
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
using Unity.Entities;
|
||||
using Unity.Mathematics;
|
||||
|
||||
namespace ProjectM.Simulation
|
||||
{
|
||||
/// <summary>
|
||||
/// SERVER-ONLY transient knockback on a Husk. While <see cref="UntilTick"/> has not elapsed, EnemyAISystem
|
||||
/// moves the Husk along <see cref="Dir"/> at <see cref="Speed"/> (REPLACING its seek) and suppresses its strike.
|
||||
/// Stamped by ProjectileDamageSystem on a hit (Dir = the projectile's heading). NOT a [GhostField] — the Husk's
|
||||
/// displaced position already replicates via the stock LocalTransform default variant, so knockback adds NO
|
||||
/// replicated surface (no ghost re-bake). EnemyAISystem must remain the SOLE writer of the Husk's Position, so
|
||||
/// knockback is applied INSIDE it (never a competing system). Force/duration live in <see cref="Tuning"/>
|
||||
/// (KnockbackSpeed = 0 disables knockback globally).
|
||||
/// </summary>
|
||||
public struct KnockbackState : IComponentData
|
||||
{
|
||||
/// <summary>Planar (XZ) knockback heading — the projectile's direction at impact.</summary>
|
||||
public float2 Dir;
|
||||
|
||||
/// <summary>Knockback speed (world units/sec) applied for the window; 0 = not knocked.</summary>
|
||||
public float Speed;
|
||||
|
||||
/// <summary>Server tick until which the knockback is active (0 = none; scheduled via TickUtil.NonZero).</summary>
|
||||
public uint UntilTick;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user