enemyShot[j].bullet[k].x += enemyShot[j].bullet[k].speed * Math.cos(enemyShot[j].bullet[k].angle);
enemyShot[j].bullet[k].y += enemyShot[j].bullet[k].speed * Math.sin(enemyShot[j].bullet[k].angle);
現在弾の移動プログラムをこのようにしているのですが、この方法だと楕円が描けないと思い
他にいい方法がないかで悩んでいます。
vx,vyで速度管理をすることも考えたのですが、vx,vyだとホーミング弾の時にうまく進まなですし。
speedでの速度管理だとホーミングは正常なのですが、speedだと弾幕作りでvx,vyより作れるものが限られてしまう気がしています。
ホーミングとの切り替えや、作れる弾幕の種類など、なるべくスマートなプログラムで拡張性が高いものを作りたいので、
どなたかいい案があればお願いします。
また、皆さんはどのような弾の移動プログラムにしてるのかもよかったら教えてください。
弾の移動プログラム
Re: 弾の移動プログラム
(1)vx,vyの移動とspeed,angleの移動を両方使う
(2)speed,angleの移動を複数作る
思いつくのはこの2つですかね
(2)の場合、angle=0,angle2=π/2(90°)にすれば、speed,speed2をvx,vyとして使えるので
どっちでもいいと思います。
私は楽なので(1)を使ってます。
enemyShot[j].bullet[k].x += enemyShot[j].bullet[k].speed * Math.cos(enemyShot[j].bullet[k].angle);
enemyShot[j].bullet[k].y += enemyShot[j].bullet[k].speed * Math.sin(enemyShot[j].bullet[k].angle);
enemyShot[j].bullet[k].x += enemyShot[j].bullet[k].vx;
enemyShot[j].bullet[k].y += enemyShot[j].bullet[k].vy;
enemyShot[j].bullet[k].x += enemyShot[j].bullet[k].speed * Math.cos(enemyShot[j].bullet[k].angle);
enemyShot[j].bullet[k].y += enemyShot[j].bullet[k].speed * Math.sin(enemyShot[j].bullet[k].angle);
enemyShot[j].bullet[k].x += enemyShot[j].bullet[k].speed2 * Math.cos(enemyShot[j].bullet[k].angle2);
enemyShot[j].bullet[k].y += enemyShot[j].bullet[k].speed2 * Math.sin(enemyShot[j].bullet[k].angle2);
(2)の場合、angle=0,angle2=π/2(90°)にすれば、speed,speed2をvx,vyとして使えるので
どっちでもいいと思います。
私は楽なので(1)を使ってます。
Re: 弾の移動プログラム
簡易的な方法ですが、scaleX、scaleYを用意して、上の様に掛けると、楕円になると思います。
Re: 弾の移動プログラム
>>白い時空さん
やはりvx、vyとspeedの二つで管理するのが一番わかり易いですよね。
speed二つでの管理も考えたのですが、speed管理だと弾の位置計算を毎回しないといけないのが気になりますよね・・・。
vx.vyですと、初期化時のまま足していくだけでいいので、弾幕が多くなると処理スピードは上かなーなんて思いました。
vx.vyが安定ですかね、勉強になりました、ありがとうございます!!
>>学生Aさん
変数を用意すれば楕円を描けるのは盲点でした!!!
ですが、vx.vyに比べてしまうと、楕円軌道を描くときの速度がspeedだと等速にしかならないっぽいですね・・・。
構造体の数的にもvx.vy.speedとspeed.scaleX.scaleYで同じ数ですし、汎用性をみるとvx.vyのほうやっぱりいいですかね。
勉強になりました、ありがとうございます!!
やはりvx、vyとspeedの二つで管理するのが一番わかり易いですよね。
speed二つでの管理も考えたのですが、speed管理だと弾の位置計算を毎回しないといけないのが気になりますよね・・・。
vx.vyですと、初期化時のまま足していくだけでいいので、弾幕が多くなると処理スピードは上かなーなんて思いました。
vx.vyが安定ですかね、勉強になりました、ありがとうございます!!
>>学生Aさん
変数を用意すれば楕円を描けるのは盲点でした!!!
ですが、vx.vyに比べてしまうと、楕円軌道を描くときの速度がspeedだと等速にしかならないっぽいですね・・・。
構造体の数的にもvx.vy.speedとspeed.scaleX.scaleYで同じ数ですし、汎用性をみるとvx.vyのほうやっぱりいいですかね。
勉強になりました、ありがとうございます!!