マップチップ上で追跡する敵を4方向移動にしたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
GEN3

マップチップ上で追跡する敵を4方向移動にしたい

#1

投稿記事 by GEN3 » 1ヶ月前

初めまして。初めて掲示板を利用するので不備があったら言ってください。
Dxライブラリでプレイヤーを追いかけるゲームを作っています。
マップチップを使って敵とプレイヤーの座標を比較して移動しています。
追跡する敵の移動方向を上下と左右のみにしたいです

コード:

if (abs(PlayerX - EnemyX) <= 3 && abs(PlayerY - EnemyY) <= 3)
{


if (EnemyX < PlayerX)EnemyX += 1;
if (EnemyX > PlayerX)EnemyX -= 1;
if (EnemyY < PlayerY)EnemyY += 1;
if (EnemyX > PlayerX)EnemyY -= 1;
}

いろいろと調べたのですが斜め移動のやり方しか見つけられませんでした。

Ouxiy
記事: 165
登録日時: 3ヶ月前

Re: マップチップ上で追跡する敵を4方向移動にしたい

#2

投稿記事 by Ouxiy » 1ヶ月前

https://dixq.net/g/03_01.html
のサイトでは左右上下があります。
何かお力になれば幸いです。

アバター
usao
記事: 1565
登録日時: 6年前

Re: マップチップ上で追跡する敵を4方向移動にしたい

#3

投稿記事 by usao » 1ヶ月前

> いろいろと調べたのですが …… 見つけられませんでした。

よく目にする文言だけど,何をどう調べたのかは絶対に明かされない不思議!


Xが左右方向でYが上下方向なのだとして,

(1) Y座標を固定してX座標だけを動かせば「左右のみ」になる.
(2) X座標を固定してY座標だけを動かせば「上下のみ」になる.
(3) X座標とY座標とを同時に変更すると「斜め」に移動することになる.

という3点は明らかであると思うのだが,どうだろうか.
「明らかでない」というならば,自分はちょっともうこれ以上簡単に説明できないです.
「明らかである」ならば,上下左右のみに限定したいなら(3)が起きないようにすればよいだけ.
すなわち,X座標を動かしたならばY座標は動かさない.Y座標を動かしたならばX座標を動かさない.
(提示されたコードでは単に独立したifが4個ならんでいるけど,座標を変更する条件は互いに独立ではないということだ.)

アバター
usao
記事: 1565
登録日時: 6年前

Re: マップチップ上で追跡する敵を4方向移動にしたい

#4

投稿記事 by usao » 1ヶ月前

オフトピック
それはそれとして,「マップチップ云々…」という言葉から勝手に想像するに,
実際にゲームを作るとなると,ルール的に「敵が侵入できないマス」とかが設けられることが予想されるので,

(1) 敵の移動先候補を列挙する
 単純な例で言えば,今の座標の上下左右の4カ所のうち,侵入できる箇所であって且つ追跡対象との距離が近くなる箇所
(2) 列挙された中から実際の移動先を選ぶ

みたいな手続きにしておくと良いのかもしれない.

返信

“C言語何でも質問掲示板” へ戻る