public void ResolveStaticObjectStaticObjectCollision(Collidable2DBase obj1, Collidable2DBase obj2, Vector obj1PosDp, Vector obj1CollDirection, Vector obj2PosDp, Vector obj2CollDirection) { Ball ball = (Ball)obj1; ArenaWall wall = (ArenaWall)obj2; double movementDistance; if (wall.HasOwner) { _pointScoredSound.Play(); ball.Owner.Score += 1; ball.Speed.Distance = _ballStartVel.Clone(); ball.Speed.Distance.X = ((_centerOfArena.X - ball.Owner.Paddle.X) / Math.Abs(_centerOfArena.X - ball.Owner.Paddle.X)) * Math.Abs(ball.Speed.Distance.X); ball.MoveAbsolute(_centerOfArena.X, _centerOfArena.Y); } else { _ballBounceSound.Play(); movementDistance = Math.Sqrt(Math2D.DistanceSquared(ball.Speed.Distance)); ball.MoveNoOldPosUpdate(obj1PosDp.X, obj1PosDp.Y); ball.Speed.Distance.X = obj1CollDirection.X * movementDistance; ball.Speed.Distance.Y = obj1CollDirection.Y * movementDistance; } }
public void ResolveStaticObjectStaticObjectCollision(Collidable2DBase obj1, Collidable2DBase obj2, Vector obj1PosDp, Vector obj1CollDirection, Vector obj2PosDp, Vector obj2CollDirection) { Ball ball = (Ball)obj1; Paddle paddle = (Paddle)obj2; ball.Owner = paddle.Owner; double movementDistance; double ballCollisionPaddleCenterDistance; movementDistance = Math.Sqrt(Math2D.DistanceSquared(ball.Speed.Distance)); ball.MoveNoOldPosUpdate(obj1PosDp.X, obj1PosDp.Y); ballCollisionPaddleCenterDistance = paddle.Y - ball.Y; ball.Speed.Distance.X = obj1CollDirection.X * movementDistance; ball.Speed.Distance.Y = (obj1CollDirection.Y - ballCollisionPaddleCenterDistance / paddle.Height ) * movementDistance; _ballBounceSound.Play(); }
public void ResolveStaticObjectStaticObjectCollision(Collidable2DBase obj1, Collidable2DBase obj2, Vector obj1PosDp, Vector obj1CollDirection, Vector obj2PosDp, Vector obj2CollDirection) { Paddle paddle = (Paddle)obj1; ArenaWall wall = (ArenaWall)obj2; paddle.MoveNoOldPosUpdate(0, obj1PosDp.Y); }
public void ResolveStaticObjectStaticObjectCollision(Collidable2DBase obj1, Collidable2DBase obj2, Vector obj1PosDp, Vector obj1CollDirection, Vector obj2PosDp, Vector obj2CollDirection) { Ball ball = (Ball)obj1; Powerup powerup = (Powerup)obj2; powerup.Activate(ball); }