前提・実現したいこと
私はゲームプログラミングを勉強しており、実際にゲームを開発しております。
そんな中で、マップチップとプレイヤーとの当たり判定後の「処理」で困っています(当たり判定は出来ています)。
プレイヤーは45度ずつ8方向にキー入力で移動でき、マップチップとプレイヤーとの当たり判定は矩形でとっています。
実現したいのは、以下の画像のような移動です。
以下が当たり判定と処理です。
- プレイヤーの座標から近くの触れているマップチップの識別番号を取得し、その識別番号が当たり判定を行いたいマップチップの識別番号だったら当たり判定を行う。
- プレイヤーが動いている方向を判定する(押しているキーで判定しています)。
- 左右に動いている場合
3-1. プレイヤーのx座標を当たり判定前のx座標に戻す。
3-2. 再度、今のプレイヤーの座標で1の当たり判定を行う。
3-3. 当たっていたらプレイヤーのy座標を1の当たり判定前のy座標に戻す。
0. 上下に動いている場合
4-1. プレイヤーのy座標を当たり判定前のy座標に戻す。
4-2. 再度、今のプレイヤーの座標で1の当たり判定を行う。
4-3. 当たっていたらプレイヤーのx座標を1の当たり判定前のx座標に戻す。
発生している問題・エラーメッセージ
実現したい移動にはならず、当たり判定された場所で止まってしまいます。
以下の画像のような感じです。
原因としては、キーで移動している方向を判定しているため、3と4の当たり判定を同時に行ってしまうからです。
例えば・・・
Aキーで左、Dキーで右、Wキーで上、Sキーで下のように移動している方向を判定させると、斜め移動は左右のどちらかの移動方向と、上下のどちらかの移動方向の両方の判定を行ってしまいます。
試したこと
3か4のどちらかを判定と、それに関連する処理をコメントアウトすると左右もしくは上下の当たり判定される部分で実現したい移動ができます。
補足情報(FW/ツールのバージョンなど)
VisualStudio 2019
VC++
DirectX
どうかお知恵をお貸しください。
よろしくお願い致します。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。