Added Movements List to the IMovementController + Code Improvement
This commit is contained in:
@@ -8,56 +8,64 @@ namespace Syntriax.Modules.Movement.SpecialAction
|
||||
public class PlatformerJump : MonoBehaviour, ISpecialActionActivate, ISpecialActionDeactivate
|
||||
{
|
||||
public float JumpSpeed { get; set; } = 0f;
|
||||
public IToggleState EnabledToggleState { get; private set; } = null;
|
||||
public IToggleState EnabledToggleState { get; protected set; } = null;
|
||||
|
||||
private bool airSuspension = false;
|
||||
public float FallThreshold { get; set; } = 0f;
|
||||
private float fallMultiplier = 0f;
|
||||
public float FallMultiplier
|
||||
{
|
||||
get => fallMultiplier;
|
||||
set => fallMultiplier = value * Time.fixedDeltaTime;
|
||||
}
|
||||
private float suspensionMultiplier = 0f;
|
||||
public float SuspensionMultiplier
|
||||
{
|
||||
get => suspensionMultiplier;
|
||||
set => suspensionMultiplier = value * Time.fixedDeltaTime;
|
||||
}
|
||||
|
||||
private IGroundTrigger groundCheck = null;
|
||||
private Rigidbody2D rigid = null;
|
||||
private IToggleState toggleState = null;
|
||||
protected bool airSuspension = false;
|
||||
protected IGroundTrigger groundCheck = null;
|
||||
protected Rigidbody2D rigid = null;
|
||||
protected IToggleState toggleState = null;
|
||||
|
||||
|
||||
private void Awake()
|
||||
protected virtual void Awake()
|
||||
{
|
||||
JumpSpeed = 10f;
|
||||
fallMultiplier = 1.5f * Time.fixedDeltaTime;
|
||||
suspensionMultiplier = 1f * Time.fixedDeltaTime;
|
||||
FallMultiplier = 1.5f;
|
||||
SuspensionMultiplier = 1f;
|
||||
EnabledToggleState = new MemberToggleState();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
protected virtual void Start()
|
||||
{
|
||||
rigid = GetComponent<Rigidbody2D>();
|
||||
groundCheck = GetComponentInChildren<IGroundTrigger>();
|
||||
toggleState = GetComponent<IToggleState>();
|
||||
}
|
||||
|
||||
private void FixedUpdate()
|
||||
protected virtual void FixedUpdate()
|
||||
{
|
||||
if (!EnabledToggleState.Toggled)
|
||||
return;
|
||||
|
||||
if (rigid.velocity.y < 0f)
|
||||
ApplySuspension(suspensionMultiplier);
|
||||
if (rigid.velocity.y < FallThreshold)
|
||||
ApplySuspension(SuspensionMultiplier);
|
||||
else if (!airSuspension)
|
||||
ApplySuspension(fallMultiplier);
|
||||
ApplySuspension(FallMultiplier);
|
||||
}
|
||||
|
||||
private void ApplySuspension(float multiplier)
|
||||
{
|
||||
rigid.velocity += Physics2D.gravity * multiplier;
|
||||
}
|
||||
protected virtual void ApplySuspension(float multiplier)
|
||||
=> rigid.velocity += Physics2D.gravity * multiplier;
|
||||
|
||||
private void Jump()
|
||||
protected virtual void Jump()
|
||||
{
|
||||
Vector2 velocity = rigid.velocity;
|
||||
velocity.y = JumpSpeed;
|
||||
rigid.velocity = velocity;
|
||||
}
|
||||
|
||||
public void Activate()
|
||||
public virtual void Activate()
|
||||
{
|
||||
if (!toggleState.Toggled)
|
||||
return;
|
||||
@@ -68,7 +76,7 @@ namespace Syntriax.Modules.Movement.SpecialAction
|
||||
airSuspension = true;
|
||||
}
|
||||
|
||||
public void Deactivate()
|
||||
public virtual void Deactivate()
|
||||
{
|
||||
if (!toggleState.Toggled)
|
||||
return;
|
||||
|
Reference in New Issue
Block a user