弾幕シューティングゲームが作りたい
turuyasou 2013/7/8(Mon) 20:27:47|NO.55564
弾幕シューティングゲームの作成を考えている者です。
横スクロールシューティングは完成させたことがあります。
あるていどのHSPの知識はあります。
本題に入ります
よく東方のゲームなどで見る
少し時間を置いて360度弾を発射する弾幕です
わかりずらいと思いますが360度の弾が一気にではなく一発うったら少し時間を空けて15度ぐらい上がった方向に打つというやつです
どうプログラムすればいいのかわからないので教えてください。
菊岡万次郎 2013/7/8(Mon) 20:41:23|NO.55565
具体的にその弾幕が移っている動画とかありますか?
それがあったら式が思いつきそうです
turuyasou 2013/7/8(Mon) 20:45:12|NO.55566
www.youtube.com/watch?v=zntkFFFVE0A
の動画の真ん中にある弾幕みたいなのです
菊岡万次郎 2013/7/8(Mon) 21:17:12|NO.55567
こんな漢字でしょうか?
#define Num 50000 // 玉の総数
#define Div 16 // 玉発射方向数
#define Around 3//玉の間隔フレーム
#define Rotate 0.02 // 回転スピード
#define Speed 3.0 // 玉の速度
#define cx 320 // 中心
#define cy 240
ddim r,Num // 角度
ddim dis,Num // 距離
dim begin,Num // 発射状態に入るまで
// 玉の初期化
foreach r
r(cnt) = 0.0
dis(cnt) = 0.0
begin(cnt) = cnt*Around
loop
repeat
redraw 0
color 0,0,0
boxf
color 255,255,255
// 玉の時間遷移
foreach r
// もし発射状態だったら
if(begin(cnt) < 0){
r(cnt) += Rotate
dis(cnt) += Speed
cnt2 = cnt
repeat Div
r2 = r(cnt2) + (M_PI/(Div/2.0))*cnt
pset cos(r2)*dis(cnt2) + cx,sin(r2)*dis(cnt2) + cy
loop
}else{
begin(cnt) -= 1
}
loop
await 1
redraw 1
loop
菊岡万次郎 2013/7/8(Mon) 21:30:04|NO.55568
少し改良しました。
#define Num 10000 // 玉の総数
#define Div 16 // 玉発射方向数
#define Around 5//玉の間隔フレーム
#define Rotate 0.01 // 回転スピード
#define Speed 3.0 // 玉の速度
#define cx 320 // 中心
#define cy 240
ddim r,Num // 角度
ddim dis,Num // 距離
dim begin,Num // 発射状態に入るまで
// 玉の初期化
foreach r
r(cnt) = 0.0
dis(cnt) = 0.0
begin(cnt) = cnt*Around
loop
repeat
redraw 0
color 0,0,0
boxf
color 255,255,255
// 玉の時間遷移
foreach r
// もし発射状態だったら
if(begin(cnt) < 0){
r(cnt) += Rotate
dis(cnt) += Speed
cnt2 = cnt
repeat Div
r2 = r(cnt2) + (M_PI/(Div/2.0))*cnt
x = cos(r2)*dis(cnt2) + cx
y = sin(r2)*dis(cnt2) + cy
circle x-3,y-3,x+3,y+3,0
loop
}else{
begin(cnt) -= 1
r(cnt) = double(cnt\180.0)/180.0*M_PI
}
loop
await 16
redraw 1
loop
turuyasou 2013/7/9(Tue) 12:36:32|NO.55575
ありがとうございます
できたのですがこれからのためにそのソースを解説したいただけないでしょうか