public void AccountForHorizontalVelocity(ref Vector2 translation) { Vector2 xTranslation = new Vector2(translation.X, 0); playerCollider.UpdateBounds(owner.Transform.Position + xTranslation); Vector2?pushback = null; foreach (Collider collider in Collider.ActiveColliders()) { if (playerCollider.StaticCollisionCheck(collider, out pushback) && !collider.Equals(playerCollider)) { translation += pushback.Value; } } playerCollider.UpdateBounds(owner.Transform.Position - xTranslation); }
public void AccountForVerticalVelocity(ref Vector2 translation) { Vector2 yTranslation = new Vector2(0, translation.Y); playerCollider.UpdateBounds(owner.Transform.Position + yTranslation); Vector2?pushback = null; foreach (Collider collider in Collider.ActiveColliders()) { if (playerCollider.StaticCollisionCheck(collider, out pushback) && !collider.Equals(playerCollider)) { translation += pushback.Value; if (translation.Y <= 0) { canJump = true; translation.Y = 0; } velocity.Y = 0; } } playerCollider.UpdateBounds(owner.Transform.Position); }