質問編集履歴

1

質問内容の修正

2021/10/24 02:11

投稿

Nauclhlt
Nauclhlt

スコア24

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,9 @@
10
10
 
11
11
  足場の描画は、画像を回転描画する関数でできたのですが、
12
12
 
13
+ あたっているかの判定はできているのですが、
14
+
13
- 当たり判定がうまくいきません。
15
+ その後の座標を補正する処理がうまくいきません。
14
16
 
15
17
  現在使用している方法としては、
16
18
 
@@ -24,11 +26,61 @@
24
26
 
25
27
 
26
28
 
29
+
30
+
27
31
  まず、矩形を斜めに敷き詰めてそれぞれ当たり判定を行う、という方法は適しているのか、
28
32
 
29
33
  もしそうなら問題を解決するためにどのような改善が必要なのか
30
34
 
31
35
  そうでないのなら別の方法や参考になるサイトを教えていただきたいです。
36
+
37
+
38
+
39
+ ###ソースコード
40
+
41
+ ```C#
42
+
43
+ private void ProcessCollision( Player player, List<Rectangle> rectangles )
44
+
45
+ {
46
+
47
+ foreach ( Rectangle rect in rectangles )
48
+
49
+ {
50
+
51
+ if ( IsCollidingTop( player.Rect, rect ) && player.Y < rect.Y )
52
+
53
+ {
54
+
55
+ player.Y = rect.Y - PLAYER_HEIGHT;
56
+
57
+ }
58
+
59
+ }
60
+
61
+ }
62
+
63
+
64
+
65
+ private bool IsColliding( Rectangle rectangle1, Rectangle rectangle2 )
66
+
67
+ {
68
+
69
+ int ydistance = Math.Abs((rectangle1.Y + rectangle1.Height / 2) - (rectangle2.Y + rectangle2.Height / 2));
70
+
71
+ int xdistance = Math.Abs((rectangle1.X + rectangle1.Width / 2) - (rectangle2.X + rectangle2.Width / 2));
72
+
73
+ int ydiv = rectangle1.Height / 2 + rectangle2.Height / 2;
74
+
75
+ int xdiv = rectangle1.Width / 2 + rectangle2.Width / 2;
76
+
77
+
78
+
79
+ return xdistance < xdiv && ydistance < ydiv;
80
+
81
+ }
82
+
83
+ ```
32
84
 
33
85
 
34
86