ゼルダのようなアクションゲームについて

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

ゼルダのようなアクションゲームについて

#1

投稿記事 by sisi » 15年前

ものすごい基本的なことかもしれないのですが
ゼルダのようなゲームで一画面内を主人公キャラを八方向に移動できるようにし
Zを押すと火の玉を飛ばせるようにしその火の玉を当てて画面内のランダムで動き回っている敵を倒す
といったゲームを作成しようとしているのですが
現在出来た範囲は八方向移動ができてZを押すと玉を飛ばせるようになったのですが今回質問したいのは
Zを押して出だしは出したい方向に出せるのですがその後歩く方向を変えるとその方向に途中で玉が曲がってしまいます。

右を向いている時にZを押して出した玉をその後左に向いても方向が変わらず
そのまま右に飛んでいく玉にするにはどう記述すればいいのでしょうか?

ちゃお

Re:ゼルダのようなアクションゲームについて

#2

投稿記事 by ちゃお » 15年前

バグですね。
1フレームごとに弾移動のコードが処理されていると思いますが、主人公キャラーが移動し後の位置情報が、なぜか弾移動の処理で反映されているのだと思います。

まずは、弾の移動を処理する部分のプログラムを見直したほうが良いのではないでしょうか?
考えてみてください。

conio

Re:ゼルダのようなアクションゲームについて

#3

投稿記事 by conio » 15年前

恐らく、こんな感じになっているのではないのでしょうか?
-------------------------------------------
switch(主人公の向き){
    case DIRECT_RIGHT: x++;break;
    case DIRECT_LEFT: x--;break;
    case DIRECT_UP:  y--;break;
    case DIRECT_DOWN:  y++;break;
    default:break;
}
-------------------------------------------

現在の主人公の向きで判断しているので、主人公の向きが変わった時に弾の方向も変わります。

なので弾の方に「発射した瞬間の主人公の向き」を何らかの変数に入れておき
その変数の値で、どの方向に飛ぶかを判断させれば良いのではないでしょうか。

sisi

Re:ゼルダのようなアクションゲームについて

#4

投稿記事 by sisi » 15年前

おかげでちゃんと動きました!どうもありがとうございました

閉鎖

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