using Syntriax.Modules.Movement.ColliderTrigger; using UnityEngine; namespace Syntriax.Modules.Movement.Implementations.TwoDimensional { public class OneDirectional2DAirMovement : OneDirectional2DMovementBase { protected override float moveValue { get; set; } = 0f; protected IGroundTrigger groundTrigger = null; protected override void Start() { base.Start(); groundTrigger = GetComponentInChildren(); groundTrigger.OnTriggered += OnGroundTrigger; } private void OnGroundTrigger(bool isGrounded) => CanTakeOver = !isGrounded; public override void ApplyMovement() { Vector2 velocity = rigid.velocity; velocity.x += moveValue * Time.fixedDeltaTime; if (moveValue != 0f) { if (Mathf.Abs(velocity.x) > Mathf.Abs(moveValue)) velocity.x = moveValue; else if (Mathf.Abs(velocity.x - moveValue) > Mathf.Abs(moveValue)) velocity.x += moveValue * Time.fixedDeltaTime; } rigid.velocity = velocity; } protected override void OnDeactivated() { } protected override void OnActivated() { } } }