public override void Update()
        {
            PhysicsActorComponent boardPhysics = Actor.Game.Board.GetComponent <PhysicsActorComponent>();
            PhysicsActorComponent actorPhysics = Actor.GetComponent <PhysicsActorComponent>();

            if (Actor.Game.IsLeftDown)
            {
                actorPhysics.Position.X -= 20;
            }

            if (actorPhysics.Position.X - actorPhysics.Size.W / 2 < 0)
            {
                actorPhysics.Position.X = actorPhysics.Size.W / 2;
            }

            if (Actor.Game.IsRightDown)
            {
                actorPhysics.Position.X += 20;
            }

            if (actorPhysics.Position.X + actorPhysics.Size.W / 2 > boardPhysics.Size.W)
            {
                actorPhysics.Position.X = boardPhysics.Size.W - actorPhysics.Size.W / 2;
            }
        }
Exemple #2
0
        public bool InCollision(Actor actor1, Actor actor2)
        {
            PhysicsActorComponent actor1Physics = actor1.GetComponent <PhysicsActorComponent>();
            PhysicsActorComponent actor2Physics = actor2.GetComponent <PhysicsActorComponent>();

            if (actor1Physics.Position.X - actor1Physics.Size.W / 2 > actor2Physics.Position.X + actor2Physics.Size.W / 2)
            {
                return(false);
            }

            if (actor1Physics.Position.X + actor1Physics.Size.W / 2 < actor2Physics.Position.X - actor2Physics.Size.W / 2)
            {
                return(false);
            }

            if (actor1Physics.Position.Y - actor1Physics.Size.H / 2 > actor2Physics.Position.Y + actor2Physics.Size.H / 2)
            {
                return(false);
            }

            if (actor1Physics.Position.Y + actor1Physics.Size.H / 2 < actor2Physics.Position.Y - actor2Physics.Size.H / 2)
            {
                return(false);
            }

            return(true);
        }
Exemple #3
0
        protected virtual void Draw(Actor actor, Color color)
        {
            PhysicsActorComponent physics = actor.GetComponent <PhysicsActorComponent>();

            DrawSquare
            (
                physics.Position.X - physics.Size.X / 2,
                physics.Position.Y - physics.Size.Y / 2,
                physics.Size.X,
                physics.Size.Y,
                color
            );
        }
        public override void Update()
        {
            PhysicsActorComponent boardPhysics  = Actor.Game.Board.GetComponent <PhysicsActorComponent>();
            PhysicsActorComponent paddlePhysics = Actor.Game.Paddle.GetComponent <PhysicsActorComponent>();
            PhysicsActorComponent actorPhysics  = Actor.GetComponent <PhysicsActorComponent>();

            actorPhysics.Position.X += Speed.X;

            if (actorPhysics.Position.X - actorPhysics.Size.W / 2 < 0)
            {
                actorPhysics.Position.X = actorPhysics.Size.W / 2;

                Speed.X *= -1;
            }

            if (actorPhysics.Position.X + actorPhysics.Size.W / 2 > boardPhysics.Size.W)
            {
                actorPhysics.Position.X = boardPhysics.Size.W - actorPhysics.Size.W / 2;

                Speed.X *= -1;
            }

            if (Actor.Game.InCollision(Actor, Actor.Game.Paddle))
            {
                actorPhysics.Position.X -= Speed.X;

                Speed.X *= -1;
            }

            foreach (var block in Actor.Game.Blocks)
            {
                BlockActorComponent blockComponent = block.GetComponent <BlockActorComponent>();

                if (blockComponent.IsAlive && Actor.Game.InCollision(Actor, block))
                {
                    blockComponent.IsAlive = false;

                    actorPhysics.Position.X -= Speed.X;

                    Speed.X *= -1;
                }
            }

            actorPhysics.Position.Y += Speed.Y;

            if (actorPhysics.Position.Y - actorPhysics.Size.H / 2 < 0)
            {
                actorPhysics.Position.Y = actorPhysics.Size.H / 2;

                Speed.Y *= -1;
            }

            if (actorPhysics.Position.Y + actorPhysics.Size.H / 2 > boardPhysics.Size.H)
            {
                IsAlive = false;
            }

            if (Actor.Game.InCollision(Actor, Actor.Game.Paddle))
            {
                actorPhysics.Position.Y = paddlePhysics.Position.Y - paddlePhysics.Size.H / 2 - actorPhysics.Size.H / 2;

                Speed.X  = (actorPhysics.Position.X - paddlePhysics.Position.X) / -5;
                Speed.Y *= -1;
            }

            foreach (var block in Actor.Game.Blocks)
            {
                BlockActorComponent blockComponent = block.GetComponent <BlockActorComponent>();

                if (blockComponent.IsAlive && Actor.Game.InCollision(Actor, block))
                {
                    blockComponent.IsAlive = false;

                    actorPhysics.Position.Y -= Speed.Y;

                    Speed.Y *= -1;
                }
            }
        }