現状行き詰っているので、、バーとボールのみでの動作をいったんの目標にしてます。
timerメソッドの中に組み込む接触を判断する部分を作成しているのですが、
Puddle puddle = new Puddle();
Ball ball = new Ball(); /*独自定義のクラスでそれぞれにX、Y座標と、ballには速度VX,VYがあります */
private void timer1_Tick(object sender, EventArgs e)
{
int a, b,c,d;
if(keyPressed.Count >= 1)
{
switch(keyPressed[0])
{
case Keys.X:
puddle.X += 10; break;
case Keys.Z:
puddle.X -= 10; break;
} /*ここはバーの操作の処理*/
}
ball.X += ball.VX;
ball.Y += ball.VY;
a = puddle.X;
b = puddle.Y;
c = ball.X;
d = ball.Y;
if (a - c < 10 && a - c < (-10))
{
if (b == d)
ball.VY *= (-1);
}
if (ball.Y == 0 || ball.Y == this.Width )
ball.VY *= (-1);
if (ball.X == 0 || ball.X == this.Width)
ball.VX *= (-1);
this.Invalidate();
}
これだと接触した際に反射はしたのですが、バーより左の何もない部分で反射したり
バーが失踪したりと何かと不具合が絶えません。
どう修正すればいいか教えていただけませんか?