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; } }
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); }
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; } } }