ページ 11

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

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

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

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

Posted: 2009年11月02日(月) 07:58
by ちゃお
バグですね。
1フレームごとに弾移動のコードが処理されていると思いますが、主人公キャラーが移動し後の位置情報が、なぜか弾移動の処理で反映されているのだと思います。

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

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

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

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

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

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

Posted: 2009年11月04日(水) 21:50
by sisi
おかげでちゃんと動きました!どうもありがとうございました