ワールドとのインタラクション ダメージジーンと敵キャラクター
- アイテムと同じように敵を作成
- 無敵時間の設定
- スプライトの大きさ変更 + Box Collider 2D の Auto Tiling
- 動く敵
OnTriggerEnter2Dはエリアに入った時、OnTriggerStay2Dがエリアにいるとき。書いてないけどonXXXExitが離れた時。
常に判定させるにはスリープをさせない設定が必要
プログラム的には難しくない
敵の動きを自分で書いてみて、反転に
x *= -1;
をやってたけど、サンプルは
x = -x
になってた。多分どっちでもよさそう。(若干コストが違うか)
コライダー同士の衝突にはトリガーではなく
OnCollisionEnter2D
を利用。
もう一つの変更点は、other.GetComponent ではなく、other.gameObject.GetComponent を使用することです。
急にコライダーじゃなくてCollisionが出てきたけど、あまり説明はない。
Collision型にはGameObjectやらTransformやらの衝突相手のオブジェクトの情報の集合っぽいという事は分かった。
スプライトアニメーション
- コンポーネントにアニメーター追加
- プロジェクトにアニメーターコントローラ追加
- アニメーションWindowを開いてスプライト設定
アニメメーターは「2Dアニメーション」じゃなくて「その他」の中にある。
順番のせいなのか、「4.スプライトの変更」がいまいち分からなかった。
Samples を 4 に設定
の方法も書いていないし、早い動きを見ただけで終わった。
検索してここを見ると
以前は現在のフレーム数の下あたりにありましたが、現在は表示されなくなっています。サンプルレートは何故か現在は非表示になっており、オプションから表示に切り替える必要があります
らしい。
あと、Flipで左右反転のさせ方も読んでて分かりづらかった。
- アニメーターコントローラ設定
- スクリプトからコントローラーへの送信
ブレンドツリーというものを使う。これは覚えていられなさそうだけど、とりあえず設定・・・
スプライトの大きさが違うのを調整する方法が分からないが、アニメーターそのものは少し分かったのでスルー
最後自キャラのアニメ設定で
NullReferenceException: Object reference not set to an instance of an object
が出て時間を食った。
結局Unityを再起動したら大丈夫になったので原因は不明。
Dommuneのマイブラ特集聴きながらやってたので少ないけどここまで。