まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
先日作成したキャラをプログラムに組み込みました。
左右に動きながら下がってくるような動作にしたかったのですが、なかなか良いやり方が思いつかず
思いの外、苦労してます^^;
こんな感じで、斜め下に移動していって端まで来たら方向を変えて斜め下に移動して・・・ってのが
作りたかったのですが、動きの制御方法をどうするかで結構悩みました。
敵の動きを制御する方法として考えられるのは・・・
1.生成時間で制御
生成からnフレーム後に移動処理を変更するって方法。
ただ、これだと反復移動させたい場合時などに、正確に移動させる為のフレーム計算が大変です。
2.表示場所で制御
n座標以上になったら移動処理を変更する方法
ただ、左右に動く場合などは相反する行動なので上手く制御出来ない時もあります。
コレくらいしか制御方法を思いつかなかったのですが、上記の方法だと反復する運動の場合に
上手く動かせなくて困ったんですよね。
で、ふと制御する為の変数を作って動き毎に変数を移行させていけばよいのでは?
と思ってやってみたら上手く行きました^^
とりあえず簡単なプログラムを作って考えてみました↓
https://blog.cnobi.jp/v1/blog/user/63629cf35d5259ece1529ed13f0745b1/1253287337
コレを動かすとこんな感じ↓
左右に動きながら降りていきます。
動きの制御は↓のようにch.actと言う変数を使って、行動を変化させたい時にch.actを
変更して対応しています。
if(ch.act==0 && rr==2.7475) {ds=2;rota=0;rr=2.7475 ;if(ch.x<= 100) ch.act=1;}
if(ch.act==1 && rr>=0.3925) {ds=2;rota=0;rr-=0.05; ;if(rr<=0.3925) ch.act=2;}
if(ch.act==2 && rr<=0.3925) {ds=2;rota=0;rr=0.3925;;if(ch.x>= 540) ch.act=3;}
if(ch.act==3 && rr<=2.7475) {ds=2;rota=0;rr+=0.05; ;if(rr>=2.7475) ch.act=4;}
if(ch.act==4 && rr>=2.7475) {ds=2;rota=0;rr=2.7475;;if(ch.x<= 100) ch.act=5;}
とりあえず、コレで上手く動くようになったので、何種類か敵の種類を増やして行こうかと
思ってるんですが、デザインを考えるのが大変なんですよね^^;
左右に動きながら下がってくるような動作にしたかったのですが、なかなか良いやり方が思いつかず
思いの外、苦労してます^^;
こんな感じで、斜め下に移動していって端まで来たら方向を変えて斜め下に移動して・・・ってのが
作りたかったのですが、動きの制御方法をどうするかで結構悩みました。
敵の動きを制御する方法として考えられるのは・・・
1.生成時間で制御
生成からnフレーム後に移動処理を変更するって方法。
ただ、これだと反復移動させたい場合時などに、正確に移動させる為のフレーム計算が大変です。
2.表示場所で制御
n座標以上になったら移動処理を変更する方法
ただ、左右に動く場合などは相反する行動なので上手く制御出来ない時もあります。
コレくらいしか制御方法を思いつかなかったのですが、上記の方法だと反復する運動の場合に
上手く動かせなくて困ったんですよね。
で、ふと制御する為の変数を作って動き毎に変数を移行させていけばよいのでは?
と思ってやってみたら上手く行きました^^
とりあえず簡単なプログラムを作って考えてみました↓
https://blog.cnobi.jp/v1/blog/user/63629cf35d5259ece1529ed13f0745b1/1253287337
コレを動かすとこんな感じ↓
左右に動きながら降りていきます。
動きの制御は↓のようにch.actと言う変数を使って、行動を変化させたい時にch.actを
変更して対応しています。
if(ch.act==0 && rr==2.7475) {ds=2;rota=0;rr=2.7475 ;if(ch.x<= 100) ch.act=1;}
if(ch.act==1 && rr>=0.3925) {ds=2;rota=0;rr-=0.05; ;if(rr<=0.3925) ch.act=2;}
if(ch.act==2 && rr<=0.3925) {ds=2;rota=0;rr=0.3925;;if(ch.x>= 540) ch.act=3;}
if(ch.act==3 && rr<=2.7475) {ds=2;rota=0;rr+=0.05; ;if(rr>=2.7475) ch.act=4;}
if(ch.act==4 && rr>=2.7475) {ds=2;rota=0;rr=2.7475;;if(ch.x<= 100) ch.act=5;}
とりあえず、コレで上手く動くようになったので、何種類か敵の種類を増やして行こうかと
思ってるんですが、デザインを考えるのが大変なんですよね^^;
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が特に好きで、並木学氏は最高!
ブログ内検索
最古記事