Exemplo n.º 1
0
        public EntityPlayer(float x, float y, float size, Color color) : base(new Vector2(x, y))
        {
            _size = size;

            CollisionBoundingBox = new AxisAlignedBB(size);
            BoundingBox          = CollisionBoundingBox.Offset(Pos - (Vector2.UnitX * CollisionBoundingBox.Size.X / 2 + Vector2.UnitY * CollisionBoundingBox.Size.Y / 2));
        }
Exemplo n.º 2
0
        public virtual void Move()
        {
            var bbO = BoundingBox.Union(BoundingBox.Offset(Motion));

            List <AxisAlignedBB> list = Game.Instance.Map.GetCollidingBoxes(bbO);

            var mOrig = Motion;

            for (int i = 0; i < list.Count; i++)
            {
                var blockBb = list[i];
                Motion.Y = blockBb.CalculateYOffset(BoundingBox, Motion.Y);
            }
            BoundingBox = BoundingBox.Offset(Motion * Vector2.UnitY);

            for (int i = 0; i < list.Count; i++)
            {
                var blockBb = list[i];
                Motion.X = blockBb.CalculateXOffset(BoundingBox, Motion.X);
            }
            BoundingBox = BoundingBox.Offset(Motion * Vector2.UnitX);

            SetPositionToBb();

            var stoppedX = Math.Abs(mOrig.X - Motion.X) > 0.00001f;
            var stoppedY = Math.Abs(mOrig.Y - Motion.Y) > 0.00001f;

            if (stoppedX)
            {
                Motion.X = 0;
            }

            if (stoppedY)
            {
                Motion.Y = 0;
            }
        }