誘導ミサイル習作
https://gyazo.com/75c1f152e33168eaa8250cc75debdcad
やった事
なるべく軽量に作りたかった(1~2時間で済ませたかった)
素材関連はAssetStoreから持ってくる
スクリプトは1個で済ませる
分かった事
code:cs
void Update(){
var acceleration = Vector3.zero;
// ここで色々やってaccelerationを作る
velocity += acceleration * Time.deltaTime;
position += velocity * Time.deltaTime;
}
$ d = vt + \frac{1}{2}at^2を実装する時の考え方
$ tを着弾までの残り時間(period)とする事で、運動方程式のグラフをメインループの世界に持って来てる
上の式を式変形して$ a = \frac{2(d-vt)}{t^2}
$ dは自分と目標との距離target.position - my.position
$ vは今の速度
$ tは着弾までの残り時間
periodは初期値に着弾時間を入れて、毎フレーム値を減らすperiod -= Time.deltaTime
code:cs
var acceleration = Vector3.zero;
var distance = target.position - my.position;
acceleration += 2*(distance - my.velocity * period) / (period * period)
加速度の最大値を制限して、誘導性能を下げられる(制限しない場合必中になる
code:cs
if(acceleration.magnitude > 100f) acceleration.normalized * 100f;
着弾時間を予め指定した必中動作なので、このままだと使えない
オブジェクトプーリングとトレイルの相性がどうも良くない
非活性した直後のフレームで再活性化すると、トレイルが残る
原因は良く分からん
非活性後、再活性まで猶予を持たせる必要がある・・・? そんなぁー
内積を使った誘導性能調整
単位ベクトルの内積の値域が-1~1になるのを利用して、加速度の上限値を調整する
あんま効果を感じられない・・・
WebGLビルド
解像度どうすんだろと思ってたらProjectSettings->Playerで直値で指定出来た
アセットストアの素材持ってくるのは、こういう時思ったより面倒
次やること
どっかのタイミングで、ぱっと出せる素材集を作っておきたい・・・