タイトルはかなり自明だと思いますが、明確にするために、衝突がどちらの側で発生したかを知る方法を理解しようとしています。
もう少し詳しく言うと、迷路のようなゲームを作ろうとしているので、衝突時にすべての動きを単純に止めることはできません。代わりに、どちら側で衝突が発生したかを識別できる必要があるため、その方向をブロックできます。
この問題に対するより良いアプローチがあれば、それを試してみてください。
これで十分な詳細であることを願っていますが、さらに必要な場合は、お問い合わせください。編集します. 前もって感謝します。
[編集] @viggity - いいえ、私は特定のゲームエンジンを使用していません。現在の「検出」コードを投稿しますが、それは少しばかげて堅牢です。
@Streklin - this.Paint イベントを使用してフォーム自体に描画することが推奨されているため、リアルタイムでの描画を改善するためにそれを行うことから始めます。また、押したもの (左、右、上、下) に基づいてタイマーが刻むたびに更新される場所も使用しています。はい、迷路はタイルベースです。現在、3色のみで構成されています。私は非常に高度なプログラマーではありません。
@Eric - 間違いなく1Dゲーム。繰り返しますが、3 色しかありません。線は黒、背景は白、正方形 (ユーザー) は緑です。画面に描画するために Bitmaps で DrawImage() を使用しています。
[疑似コードの要約を編集]
foreach(Wall _wall in 壁) if(player.intersectsWith(_wall)) 動きを止める;
@JeffH - 私が試して動作させるために使用していたコードをテストする以外に、それがほとんどすべてであるため、あなたが何を求めているのかよくわかりません。私が省略したのは、x と y が互いに独立して移動できるように、それが x 軸であるかどうかを確認する if ステートメントだけでした。そのため、壁に触れたために「立ち往生」する代わりに、壁に向かって滑ることができます。問題はその前に発生するため、それを含める意味がわかりませんでした。