HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0102
sad縦シューティングの弾の動きについてです。2未解決


sad

リンク

2015/1/2(Fri) 19:08:35|NO.66812

今、縦スクロールシューティング(弾幕)を作っていて、自機の弾の移動の処理や、
移動処理などは完成して、スクロール部分もできました。
敵の表示方法などはわかるのですが、なにゆえ弾幕シューティングをめざしているので
膨大な処理をしなければなりません。HIGIMG3?は使おうかなとも思いましたが、
ベクトルやら、MOCやら、敷居が高かったのでプラグインは使ってません。
そこで、
螺旋状の弾幕とかは、どうやって表現したらいいのでしょうか?
弾幕系について書いている、解説書をみると移動量に座標をなんちゃらでさっぱりわ
かりません。
具体的にどうやったら表現できるのでしょうか?



この記事に返信する


ZAP

リンク

2015/1/2(Fri) 22:22:45|NO.66816

>解説書をみると移動量に座標をなんちゃらでさっぱりわかりません。

どのような解説書を見ているのかわかりませんが、まず、以下のプログラムは自力で組めますか?

1)自機に向かって単発の弾を任意の速度で発射する。
2)自機の位置とは関係なく、単発の弾を任意の方向に発射する。

まずこれができるかできないかによって、答える側の答え方も変わって来ると思います。



男子中学生

リンク

2015/1/2(Fri) 22:37:04|NO.66817


dim bullet_X,1000;弾のX一座標 dim bullet_Y,1000; Y dim bullet_angle,1000;弾の進む方向 bullet_speed=4.0;弾の進む速さ repeat 1000;変数は少数化しておく bullet_X(cnt)=100.0;弾の初期位置(出現位置)を(100,100)とする bullet_Y(cnt)=100.0 loop way=0.0 font "",12 repeat 1000 bullet_angle(cnt)=way way+=0.15;弾と弾の間の角度 loop repeat 500 color 0,0,0:boxf repeat cnt*2 bullet_X(cnt)+=cos(bullet_angle(cnt))*bullet_speed bullet_Y(cnt)+=sin(bullet_angle(cnt))*bullet_speed color 200,200,200 circle bullet_X(cnt)-4,bullet_Y(cnt)-4,bullet_X(cnt)+4,bullet_Y(cnt)+4 loop pos 0,0 mes cnt redraw 1 await 20 redraw 0 loop

>>具体的にどうやったら表現できるのでしょうか?
例えば、32度の方向に弾Aを飛ばし、
つぎに、33度の方向に弾Bを飛ばし、
    34度の方向に弾C…

と複数の弾をそれぞれ微妙に異なる方向へ飛ばすことで、
「螺旋状弾幕」を描画することができます。(説明下手ですみません)

重要なのは、33度や34度など、中途半端な角度あたりのXの移動量・Yの移動量を
求める必要があります。

それを求めるには「cos」「sin」を使います。
(詳しくはHSPのリファレンス参照)

上にあげたサンプルソースは画面外に消滅した(描画する必要のない弾)まで
描画しており、処理落ちなどを考慮していないですが、
cos,sinの使い方をわかってもらえれば良いです・・・。



ONION software Copyright 1997-2021(c) All rights reserved.