visual studio のC#でブロック崩しのゲームを作成しているのですが、ブロックにボールが当たったときにブロックが消えるコードは書けたのですが、跳ね返る動作のコードがわかりません。
エラーではないですが教えていただきたいです。
C#
1 class Block : ParentClass 2 { 3 public Block(Rectangle position,int r, int g, int b):base(position,r,g,b) 4 { 5 preHit = false; 6 } 7 8 public override bool Hit(Rectangle obstaclePosition) 9 { 10 if (position.IntersectsWith(obstaclePosition) && visible) 11 { 12 visible = false; 13 return true; 14 } 15 else 16 return false; 17 18 19 } 20 } 21
C#
1class Ball : ParentClass 2 { 3 bool preHit; 4 Point speed; 5 6 public Ball(Rectangle position,int r, int g, int b,Point speed):base(position,r,g,b) 7 { 8 this.position = position; 9 this.speed = speed; 10 preHit = false; 11 } 12 13 public void CalcSpeed(Point pictureBooxSize,Rectangle obstaclePosition) 14 { 15 if (position.IntersectsWith(obstaclePosition) && !preHit) 16 { 17 double degree = Math.Atan2(position.Y + position.Height / 2 - speed.Y - (obstaclePosition.Y + obstaclePosition.Height / 2), position.X + position.Width / 2 - speed.X - (obstaclePosition.X + obstaclePosition.Width / 2)); 18 double racketDegree = Math.Atan2(obstaclePosition.Height, obstaclePosition.Width); 19 20 21 if ((degree >= -racketDegree && degree <= racketDegree)) 22 speed.X = -speed.X; 23 else 24 speed.Y = -speed.Y; 25 26 preHit = true; 27 28 } 29 else 30 preHit = false; 31
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。