忍者ブログ
まったくのプログラミング素人の筆者が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
この記事にコメントする
お名前
タイトル
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
Twitter
カレンダー
03 2024/04 05
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]