お前らRPGツクールでゲーム作れって LAWルート (388レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
312: 名前は開発中のものです。 [sage] 2009/06/20(土) 10:47:19 ID:IrWZy+Ag(1/4) AAS
>>311
おー、かなり軽くなってる。自分のPCでは青レーザー乱射地帯だけ
少し処理落ちした。
さらに軽量化するとしたら、ピクチャーの「表示」をしないことかな。
これは重いので、いっぺんに多用すると良くない。一旦表示したピクチャーは
その画像で固定して使う。ただ、これをやると弾の種類が限られてしまうが。
あと、atanの作り方に無駄が多い。tanの配列から取得してるのが良くない。
atanの配列を作ってそこから取得すれば、そもそもtanの配列は必要ない。
313(1): 名前は開発中のものです。 [sage] 2009/06/20(土) 11:05:19 ID:IrWZy+Ag(2/4) AAS
atan(というかatan2)の作り方は人それぞれだけど、
自分なりに色々作って、今のところは↓に落ち着いてる。
ATAN[i]=(180/PI)*Math.round(Math.atan((i-139)/139)); //atanの配列。i=0,1,2,…,139*2
function atan2(s1,s2,x1,x2){
dx=s1-x1;
dy=dz=s2-x2;
dz*=-1;
//二分探索で。
if(dx>=dy){
if(dx>=dz){
theta=360;goto label1;
}else{
theta=270;dy=dx;dx=dz;goto label1;
}
}else{
if(dx>=dz){
theta=90;dy=dx;dx=dz;goto label1;
}else{
theta=180;goto label1;
}
}
label1:
atan=ATAN[dy*139/dx+139]+theta;
atan%=360;
}
消費ステップは最低で16、最高で19。「139」という数字に特に意味はなくて、
大きめの奇数なら何でもいい。
315: 名前は開発中のものです。 [sage] 2009/06/20(土) 19:14:08 ID:IrWZy+Ag(3/4) AAS
>>314
合ってます。ATANの配列で-45°から45°までの値を用意しておいて、
atan2で0°〜360°バージョンを作る。atan2は
「座標(s1−x1,s2−x2)を極座標表示したときの角度(0°〜360°)」
を返す関数。
316(1): 名前は開発中のものです。 [sage] 2009/06/20(土) 19:44:48 ID:IrWZy+Ag(4/4) AAS
atan2について補足しておくと、s1,s2は自機の座標、
x1,x2が敵の座標のつもりです。分かりにくくてすまんw
使用例:
敵が原点にいて、自機が(1,√3)の座標にいる状態で自機狙い弾を
出すとしたら、敵弾の角度は60°に設定しなくちゃいけないけど、
この「60」という値はatan2(1,√3,0,0)で取得できる。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.031s