まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
バトルガレッガ(鋳薔薇)の爆発処理を真似したくて簡単な爆発発生プログラムを作ってみました。
プロジェクトファイルはコチラ↓
https://blog.cnobi.jp/v1/blog/user/63629cf35d5259ece1529ed13f0745b1/1241025718
このプログラムを動かすとこんな感じ↓
1~5キーを押すと、それぞれ対応した爆発処理を行います。
↑↓←→キーで爆破位置(赤い四角)を移動する事が出来ます。
1キーを押すと上の画像のような感じで、一つの爆発が上下左右に移動していきます。
2キーを押すと円を描いて爆発します。
この楕円を描くように広がる処理が出来なくて苦労しました^^;
普通に円を描くように描画するだけなら
移動量x=cos(角度)×速度;
移動量y=sin(角度)×速度;
で移動量を計算して、表示座標にプラスしてやれば良いのですが、楕円となるとそうはいきません。
で、なんやかんやと試していたら
移動量x=cos(角度-任意の数字)×速度;
移動量y=sin(角度-任意の数字)×速度;
と言う感じで、角度から任意の数字を引けば、楕円で表示出来るようになりました。
なんで、そうなるのかは全く理解できてませんが、ちゃんと楕円になっているので良しとしています。
3キーを押すと円を描いて回転しながら爆破します。
画像では良くわかりませんね・・・
4キーを押すと、爆破位置から外側に向かって爆破が連なって表示されます。
表示半径や、爆破の表示数などもランダムに変わるようにしてみました。
この爆破表示は以前作った事があったので、比較的すぐに出来ました。
考え方としては、まず実際に表示する爆破位置を中心として、円を描くように爆破する表示を作成して
その最初の爆破位置と実際に爆破を表示させる位置との差を計算して
最初の爆破位置を実際に表示する爆破位置にずらして表示させています。
う~ん、上手く文章で書けません^^;
5キーを押すと4の動作に加えて2の動作のように外側にも移動します。
トリッキーな動きをするので楽しいです^^
爆破パターンは先日紹介したDetonation v1.2で作成しています。
しかし、このプログラムを作っていて思ったのですが、グローバル変数とローカル変数の使い分けが
どうも良くわかりません。
例えば、爆破の関数を作ったとします。
爆破は数フレームにまたがって処理が行われるので、フレームをまたいで数値を覚えておく変数が
必要ですよね。
でもローカル変数を使うと、呼び出す度に初期化されてしまうので数値を記憶させる事が出来ません。
呼び出す度に初期化されてしまうって事は、フレームをまたいで数値を覚えておく事が出来ないって
事です。
そうなると、グローバル変数を使うしか方法が思いつかないのですが、そうするとグローバル変数を
使いまくらないといけなくなって、プログラムが大変見難くなるんですよね・・・
ポインタとかを使えば良いのかな?と思い作ってみたりするのですが、全く上手く出来ずに
どうしたもんかと思っとります(汗)
プロジェクトファイルはコチラ↓
https://blog.cnobi.jp/v1/blog/user/63629cf35d5259ece1529ed13f0745b1/1241025718
このプログラムを動かすとこんな感じ↓
1~5キーを押すと、それぞれ対応した爆発処理を行います。
↑↓←→キーで爆破位置(赤い四角)を移動する事が出来ます。
1キーを押すと上の画像のような感じで、一つの爆発が上下左右に移動していきます。
2キーを押すと円を描いて爆発します。
この楕円を描くように広がる処理が出来なくて苦労しました^^;
普通に円を描くように描画するだけなら
移動量x=cos(角度)×速度;
移動量y=sin(角度)×速度;
で移動量を計算して、表示座標にプラスしてやれば良いのですが、楕円となるとそうはいきません。
で、なんやかんやと試していたら
移動量x=cos(角度-任意の数字)×速度;
移動量y=sin(角度-任意の数字)×速度;
と言う感じで、角度から任意の数字を引けば、楕円で表示出来るようになりました。
なんで、そうなるのかは全く理解できてませんが、ちゃんと楕円になっているので良しとしています。
3キーを押すと円を描いて回転しながら爆破します。
画像では良くわかりませんね・・・
4キーを押すと、爆破位置から外側に向かって爆破が連なって表示されます。
表示半径や、爆破の表示数などもランダムに変わるようにしてみました。
この爆破表示は以前作った事があったので、比較的すぐに出来ました。
考え方としては、まず実際に表示する爆破位置を中心として、円を描くように爆破する表示を作成して
その最初の爆破位置と実際に爆破を表示させる位置との差を計算して
最初の爆破位置を実際に表示する爆破位置にずらして表示させています。
う~ん、上手く文章で書けません^^;
5キーを押すと4の動作に加えて2の動作のように外側にも移動します。
トリッキーな動きをするので楽しいです^^
爆破パターンは先日紹介したDetonation v1.2で作成しています。
しかし、このプログラムを作っていて思ったのですが、グローバル変数とローカル変数の使い分けが
どうも良くわかりません。
例えば、爆破の関数を作ったとします。
爆破は数フレームにまたがって処理が行われるので、フレームをまたいで数値を覚えておく変数が
必要ですよね。
でもローカル変数を使うと、呼び出す度に初期化されてしまうので数値を記憶させる事が出来ません。
呼び出す度に初期化されてしまうって事は、フレームをまたいで数値を覚えておく事が出来ないって
事です。
そうなると、グローバル変数を使うしか方法が思いつかないのですが、そうするとグローバル変数を
使いまくらないといけなくなって、プログラムが大変見難くなるんですよね・・・
ポインタとかを使えば良いのかな?と思い作ってみたりするのですが、全く上手く出来ずに
どうしたもんかと思っとります(汗)
PR
カレンダー
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/04)
(12/26)
(12/25)
(11/17)
(10/11)
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
最古記事