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

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

先日作成したベジェ曲線を表示するプログラムを使って敵を移動させてみました。
s-WS000688.jpg
4つの制御点を決めてベジェ曲線上に敵が移動してきます。
プロジェクトファイルはコチラ↓
ベジェ曲線を使った敵移動プログラム(右クリック→対象をファイルに保存で保存して下さい)
実行ファイルも入れていますので、VC++が無くても動かせます。

今回、表示自体は上手く出来たのですが、敵を回転表示させるのにちょっと苦労しました。
というのも、敵の進んでいる方向をどうやって計算するんだ?ってのが解らなかったんですよね。
で、色々と考えた結果、atan2関数を使って前回の座標と現在の座標とを計算すれば
方向が解るので、その結果をDrawRotaGraph関数の回転部分に入力してやれば良いのでは?
と思いやってみたら、上手く出来ました^^
具体的にはこんな感じ↓
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
enemy[i].r = atan2((enemy[i].eyz)-(enemy[i].ey), (enemy[i].exz)-(enemy[i].ex));
DrawRotaGraph( enemy[i].ex , enemy[i].ey , 1.0f , enemy[i].r-4.71 , g_teki05image , TRUE ) ;
enemy[i].exz = enemy[i].ex;//画像回転表示用に前回の座標を記憶
enemy[i].eyz = enemy[i].ey;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
まず、atan2関数でenemy[i].rを計算して、敵を表示させた後にその座標を記憶しておけば
次のループの時に方向が計算出来るって訳です。

今回も基準点、P0、P1、P2、P3をキーボード操作で移動出来ますので
色々な動きが作れて楽しいです。しかも、普通にx軸とy軸の値を足したり引いたりして動かすよりも
動きが綺麗で良い感じ^^
s-WS000689.jpg
このベジェ曲線を使うと、簡単なスクリーンセーバーとかも作れそうですね。

ただ一つ問題があって、ベジェ曲線同士をスムーズに繋ぐにはどうしたら良いのかわからないんです。
上記の画面のように4点の基準点だけで動きが終わる場合は良いのですが、もっと複雑な動きを
させようと思うと、ベジェ曲線同士を繋げて動かすような場合もあるとおもうんですが
その計算方法がわからずに、どうしたもんかと思っています^^;

PR
ビデオカメラを購入しました。
s-DSCF7745.jpg
買ったのはビクターのGZ-HD40というモデルで近所の家電量販店で41800円で購入。
一応フルHDで録画出来る物で探して、ダントツで安かったので購入しました。

いやー、それにしても最近のビデオカメラは凄いです。なんと言っても大きさがとても小さいですし
HDDやSDカードに録画出来るのでテープの煩わしさもなく、簡単に録画出来るのに
画質も綺麗に撮れて、ちょっと感動しました^^;
s-DSCF7753.jpg
今まで使っていたパナソニックのNV-DJ100との比較。
NV-DJ100の時も小さいし綺麗に撮れる!と感動してましたが、GZ-HD40と比べると
大きいし画質の差も歴然です。(10年以上前のモデルなので比べる方が間違ってますね^^;)

ただ、フルHD画質で記録を残す為にはブルーレイドライブが必要みたいなのですが
標準のDVD画質でも結構綺麗に撮れたので、DVD画質で録画すれば良いかな~と思いつつ
PC用のBDドライブなら2万円位で買えそうなので、PCでBD焼いてPS3で再生するってのも
悪くないな~なんて思っています^^;

そして、追加でバッテリー買おうかと思ったのですが、定価で16800円もするって高すぎです(汗)
せいぜい数千円やろうと思っていたので、非常にビックリしました。
アマゾンでも12000円程度なので、ちょっと高いな~と思いつつ無いと困るので注文しようかと
思いつつ、非純正品だと6000円程度で購入出来るので、そっちにしようかと思ってるんですが
充電電池の非純正品ってちょっと不安なので悩み中です^^;

先日作ったギャラガ風な敵の動きなのですが、イマイチ動きが綺麗ではありませんでした。
で、色々と調べてみるとベジェ曲線という方法を使って移動させれば良いのでは?と思い
更に調べてみると、ベジェ曲線のWikiがあったので読んでみたのですが、何を書いてあるのか
さっぱり解りませんでした^^;

で、もっと調べてみると解りやすく解説されているページを発見↓
http://musashi.or.tv/fontguide_doc3.htm
ここにも書いてありますが基本的な考え方はこんな感じかと↓
s-bz.jpg
基準点、P0、P1、P2、P3があるとします。
それぞれの間(P0-P1間、P1-P2間、 P2-P3間)を直線で結び
さらにその間(P01-P12、P12-P23)を直線で結んだ線の間の座標P03がベジェ曲線となる
って感じ。
多分、言葉で書いても解らないと思うので、DXライブラリのページにあったベジェ曲線のサンプル
もっと自分なりに解りやすくした物を作ってみたので、動かしてみて下さい↓
ベジェ曲線サンプル(右クリック→対象をファイルに保存で保存して下さい)
実行ファイルも入れていますので、VC++が無くても動かせます。
これを動かすとこんな感じ↓
s-WS000686.jpg
座標P03の赤い点がP0からP3に向かって動いて行きます。

ベジェ曲線の計算方法としてはこんな感じ(DXライブラリのページあったサンプルそのままです)
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
u = ( 1.0 / DivNum ) * Counter ;

P01[0] = ( 1.0 - u ) * P0[0] + u * P1[0] ; P01[1] = ( 1.0 - u ) * P0[1] + u * P1[1] ;
P12[0] = ( 1.0 - u ) * P1[0] + u * P2[0] ; P12[1] = ( 1.0 - u ) * P1[1] + u * P2[1] ;
P23[0] = ( 1.0 - u ) * P2[0] + u * P3[0] ; P23[1] = ( 1.0 - u ) * P2[1] + u * P3[1] ;

P02[0] = ( 1.0 - u ) * P01[0] + u * P12[0] ; P02[1] = ( 1.0 - u ) * P01[1] + u * P12[1] ;
P13[0] = ( 1.0 - u ) * P12[0] + u * P23[0] ; P13[1] = ( 1.0 - u ) * P12[1] + u * P23[1] ;

P03[0] = ( 1.0 - u ) * P02[0] + u * P13[0] ; P03[1] = ( 1.0 - u ) * P02[1] + u * P13[1] ;

x = ( int )P03[0] ;
y = ( int )P03[1] ;

Counter++;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
それぞれの基準点の任意の分割場所(u)の座標を計算して、そのまた次の分割場所を計算して~
といった感じ。
ちなみに、uは1.0を超えないのが条件です。uが0から1に増えていく間の計算をするので。

P0-P1間で考えてみますと、uが0の時はP01の座標はP0と同じで、uが1の時はP01の座標は
P1と同じになります。
計算式を見てみると、( 1.0 - u ) * P0[0] + u * P1[0] となっています。
(P0[0]とP1[0]はそれぞれのx座標です])
プログラムの中ではu = ( 1.0 / DivNum ) * Counter ;なので、uは0から徐々に1に増えて
行きますので、例えばuが0.4だったとすると、( 1.0 - 0.4 ) * P0[0] + 0.4 * P1[0]ということになり
P0-P1間を6:4で割った時のx座標の位置がわかると言う訳です。
この計算をP0-P1間、P1-P2間、 P2-P3間、P01-P12間、P12-P23間で行うと最終的に
P03の位置が計算出来ます。
で、それをuが0~1に増えるまで繰り返し計算するとベジェ曲線が出来上がります。
サンプルでは4点で計算していますが、基準点を増やせばもっと複雑な曲線を作る事も可能です。

今回作ったプログラムでも基準点、P0、P1、P2、P3をキーボード操作で移動出来ますので
色々な曲線が作れて楽しいです^^
s-WS000687.jpg
後は、この仕組みをゲームに組み込めば良いのですが、移動処理を一から作らないと
いけないような気がして、閉口してます^^;

そして、このベジェ曲線を使えば綺麗なホーミングレーザーとかも描画出来るんではないかと
思っているのですが、動く敵の場合だと上手くいくのか?などと色々と悩んでおります。
とりあえず、コレを使ってギャラガっぽい敵の動きに挑戦してみますが、今後この話題が
出なかったら上手く出来なかったんだと思って下さい(汗)

ギャラガのボーナスステージみたいな動きをさせてみたいなーと思って移動処理を作ってみた。
s-WS000685.jpg
全然ギャラガっぽくないですが、まぁ試しに作った物なので^^;
プロジェクトファイルはコチラ↓
https://blog.cnobi.jp/v1/blog/user/63629cf35d5259ece1529ed13f0745b1/1253631582

今回は速度を一定にして、角度だけで方向を変えてみたのですがイマイチ動きに繊細さがないと
言うか、綺麗じゃないです。
速度も上手く制御出来たら、もっと綺麗に動いてくれそうな気がするのですが、ギャラガっぽい
動き自体がちょっと違うかな?と言う気がしてきたので、また別の動きを作ってみようかと思ってます。
オメガファイブのサントラを購入しました^^
s-DSCF7733.jpg
ゲーム自体はプレイした事あったんですが、プレイ中は音楽の音量が小さい?のか私が鈍感
なのか、それほど気に留めてなかったんですが、先日ネットラジオでたまたま聴いたら
メチャクチャかっこよくて、聴いた後に速攻で注文してました^^;

収録曲はこんな感じ(公式サイトより転載)
01 Title: Planet of hope
02 Stage 1: The glacial fortress
03 Stage 2: The escalated invasion
04 Stage 3: The place to rebirth
05 Stage 4: The warrior factory
06 Boss: Violent guardian
07 Stage Clear: Report from destroyer
08 Staff Roll: Road to the future
>>> レトロモード
09 Stage 1: The glacial fortress (Retro)
10 Stage 2: The escalated invasion (Retro)
11 Stage 3: The place to rebirth (Retro)
12 Stage 4: The warrior factory (Retro)
13 Boss: Violent guardian (Retro)
14 Stage Clear: Report from destroyer (Retro)
15 Staff Roll: Road to the future (Retro)
[ アレンジバージョン ]
16 The glacial fortress (Arranged by 安井 洋介)
17 The escalated invasion (Arranged by 細江 慎治)
18 The place to rebirth (Arranged by 佐宗 綾子)
19 The warrior factory (Arranged by 齋藤 博人)
20 Violent guardian (Arranged by 佐藤 孝紀)
21 Road to the future (Arranged by 岩月 博之)

曲調としてはフュージョンとテクノを合わせたっぽい感じでカシオペアとか好きな人は気に入りそう
な感じです。
全曲良いのですが、中でもStage 1: The glacial fortressが最高にカッコよくて、この曲だけで
ご飯3杯はいけます^^
あとはStage 3: The place to rebirthとかBoss: Violent guardianもかなり良かった。

このサントラには通常曲にプラスしてレトロバージョンが収録されているのですが
サンプリングレートが低そうなドラムとFM音源っぽい音で、おっさん大喜びです^^

そして、アレンジバージョンのThe glacial fortress (Arranged by 安井 洋介)がかなり渋い。
コチラでも書かれていますが、新たにメロディーやアドリブパートがプラスされており
それがまたカッコイイんですよね。往年のファンキーK.Hっぽいベースラインと言い
VOPMを使ったFM音源と言い、とってもカッコイイアレンジでした。
個人的には中盤のオーケストラヒットがなるベースソロ?っぽい部分からサビの盛り上がる
部分がツボでした。

値段も2100円と安いですし、テクノやフュージョン好きでGM好きなら買ってみても良いのでは
ないでしょうか^^
Twitter
カレンダー
06 2026/07 08
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 31
最新コメント
[04/20 kt.]
[04/19 うぇむ]
[11/24 kt.]
[11/21 NONAME]
[11/24 kt.]
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
忍者ブログ [PR]