Ejemplo n.º 1
0
        protected virtual void CollisionDetection()
        {
            List <Object> collided = Level.CollidedWith(this);

            foreach (Object obj in collided)
            {
                this.CollisionResponse(obj);
                obj.CollisionResponse(this);
            }
        }
Ejemplo n.º 2
0
        public override void Update(GameTime gameTime)
        {
            if (type == BlockType.MovableBlock)
            {
                movableBlock.Update(gameTime);
            }
            if (blockInfo != null && blockInfo.Moving == true)
            {
                List <Object> collided = Level.CollidedWith(this);
                List <Object> above    = new List <Object>();
                foreach (Object obj in collided)
                {
                    Location location = LocationOf(obj);
                    if (location == Location.ABOVE)
                    {
                        above.Add(obj);
                    }
                }

                if (blockInfo.Positive)
                {
                    position += blockInfo.Speed;
                    foreach (Object obj in above)
                    {
                        obj.Position += blockInfo.Speed;
                    }
                }
                else
                {
                    position -= blockInfo.Speed;
                    foreach (Object obj in above)
                    {
                        obj.Position -= blockInfo.Speed;
                    }
                }

                // out of bound
                if (position.X < blockInfo.LeftBound ||
                    position.X > blockInfo.RightBound ||
                    position.Y < blockInfo.TopBound ||
                    position.Y > blockInfo.BottomBound)
                {
                    blockInfo.Moving = false;
                }

                CollisionDetection();
            }
        }