記事作成 2019年6月
PlayMaker 1.9.0 / Unity 2018.2.6f1
「弾を発射する 1」 の続きになります。重複する部分は省略しているので
前回のエントリを見た上で読むことをおすすめします。
今度は、DOTween とグローバル変数を使って弾を飛ばします。
この動画では、前回との違いはわかりにくいでしょうか。
シーンビューで。
前回のように[Add Force] で力を加えられて飛んでいるのではなく、
目標を定めて、そこへ向かって移動しています。
目標に向かって飛ばすために、出現位置の先に、目標となるオブジェクトを置いています。
緑の玉です。 「Sphere弾出現位置」をコピーするといいでしょう。インスペクタの設定は同じです。
プレハブ化して飛ばす弾を作ります。前回のものと同様、Sphere にRigidbody を付けたものです。
弾の状態遷移も、はじめのノードの中身を変更しただけのものになります。
アクションは
[Do Tween Transform Local Path] のみです。
なぜDOTween かは PlayMaker Tween事情 のエントリをご覧ください。
これは、パスに沿ってオブジェクトを移動させるアクションです。
図のように、目標、到達時間などを設定します。
Ease Type は様々な動作パターンを設定できます。弾丸が球でなく形に前後があれば
上の、Look At なども調節します。
----------------------------------------------
どうでしょう、再生すると目標まで飛んでいくでしょうか。
----------------------------------------------
無事飛んでいくのを確認したら、プレハブ化します。
前回の、Sphere弾の発射を管理した状態遷移を使います。
状態「弾出現」の選択 Game Object のみ今作ったプレハブに変更します。
そして、再生してみても、弾は飛んでいかないと思います。
これは、プレハブ化したときに問題が発生した結果です。
あらためてプレハブを確認してみると、パスの目標が未設定になっています。
プレハブ化したオブジェクト上のアクションからは、シーン上のオブジェクトを認識できません。
弾は目標を見失っているのです。
----------------------------------------------
変数は使えますが、プレハブの状態遷移内のローカルではやはり無理なので、
グローバル変数を使います。グローバル変数の作り方
[g_gobj 弾目標位置代入] とでも名前をつけ作成します。
そして、ゲーム開始直後、この変数に弾の目標位置が代入されるようにします。
図では、空オブジェクト「emp 開始時グローバル変数代入」の状態遷移で
[Set Game Object] を使い、弾目標位置を代入しています。
弾プレハブのアクションに、作成したグローバル変数を設定します。
今度は、未設定になりません。
わずかながら時間がかかるということです。
なので、グローバル変数の値を使って機能させるような仕組みは、開始後
その分の間を必要とすることを、考慮しなければなりません。
----------------------------------------------
カメラの動き の追随カメラを付けてみると、このように。
0 件のコメント:
コメントを投稿