Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }