お前ら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