忍者ブログ
まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

以前作成したSolid State SURVIVORの場合は、敵の種類毎に移動処理を書いていたので
同じような処理を何回も書いていて、作成効率が悪かったんですよね。
なので、何とか敵の移動処理を関数で纏めて、敵ごとにパラメータで動きを制御するように
出来ないかと思って、とりあえず簡単な関数を作って考えてみました。

まず、敵を移動させる方法としては、X軸とY軸の座標を足したり引いたりする方法。
でも、この方法だと直線的な動きしか出来ないんですよね。
ギャラガのボーナスステージみたいな曲線的な動きをさせる為には三角関数を使って動かす必要が
あります。
その辺を踏まえて簡単なプログラムを作ってみました。
プロジェクトファイルはコチラ↓
https://blog.cnobi.jp/v1/blog/user/63629cf35d5259ece1529ed13f0745b1/1248023909
このファイルを実行させるとこんな感じ↓
s-WS000641.jpg
A⇔Zで移動速度変更。
S⇔Xで回転角度変更。
↑↓←→キーを押すと、その方向に強制的に動きます。

移動用の関数としてはこんな感じ↓
void enemy_move_rotation(double ds,double rota)
{
 int color_white= GetColor( 255 , 255 , 255 ) ;
 static double r=0;
 r+=rota;//回転角度プラス

 ch.mx=cos(r)*ds;//移動量x
 ch.my=sin(r)*ds;//移動量y

 ch.x=ch.x+ch.mx;//座標計算x
 ch.y=ch.y+ch.my;//座標計算y

 DrawRotaGraph( ch.x , ch.y , 1.0f , r , image , TRUE ) ;//自機表示

 if( ch.x<0 )   ch.x=0;//はみ出さないように
 if( ch.x>640 ) ch.x=640;
 if( ch.y<0 )   ch.y=0;
 if( ch.y>480 ) ch.y=480;
}

で、こんな感じでパラメータを指定して移動させます。
enemy_move_rotation(8,1.57);

動きのパラメータとしては、速度と角度が主なパラメータで角度を小さくすれば真っ直ぐにも移動
出来るので、移動時間毎にパラメータを変化させていけば複雑な動きも出来るのではないかと
思っています。
そしてDrawRotaGraph関数を使う事によって、キャラの表示座標が画像の中心になるので
色んな大きさのキャラに使う事が出来ます。
とりあえずコレを元に敵の移動関数を追加しようと思っています^^

PR
この記事にコメントする
お名前
タイトル
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
Twitter
カレンダー
10 2024/11 12
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
最新コメント
[04/20 kt.]
[04/19 うぇむ]
[11/24 kt.]
[11/21 NONAME]
[11/24 kt.]
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
忍者ブログ [PR]