ついにできた、と思う。
・ショットと隕石がヒットした
↓
・addVector関数にヒットしたショットと隕石の向き、速度、質量をそれぞれ渡して計算してもらう
↓
・関数の中身
・速度x質量=移動エネルギーを計算
・移動エネルギーによる移動先を計算。ショットと隕石のxy全部やる
・ショットの座標に隕石の座標を足す→最終的な移動先の座標
・初期位置から最終的な移動先への方角を計算
・移動距離の計算
・配列として返す
↓
・このまま隕石の方角と速度に入れると爆速でふっとんでいくので、隕石の大きさごとに上限を設定した。
どのくらい反発するかとか、質量の違いによる影響の違いとかをどうプログラムに落とし込んだらいいのか結構考えたけど、当初想定していたよりもずっとプログラムはすっきりしていた。もっとswitch文でゴリゴリ分岐とかする予定だったのにそんなこと必要なかった。
とりあえずなんとなく向きのある力がベクトルというぼんやりした知識しかなかったが、今回のことで少しベクトルについてわかった気がする。
ただ、実際の所当たり判定は円でやってないし(処理が重そう)、接地面からの法線うんぬんもまったく手を付けていない。そのへんはもう無視して純粋にショットと隕石のベクトルの足し算と質量の違いによる影響の変化だけを計算している感じである。でもまぁわりと自然な動きになったように思う。
他にはオープニングの画面遷移も作ったし、あとは死亡時の流れを作ればゲームとしての体裁はかなり整う事になりそうだ。
ログインしてコメントを確認・投稿する