公式のUnity2D入門をv2020.3でやってみる(2)


機械翻訳の日本語と書いてあったけど、特に問題は感じてない。プログラム部分の解説だけ改善の余地が多少ありそう。

ワールドを装飾しよう

  • 前後の描画方法
  • プレハブについて

手前を前に表示するにはプロジェクト設定のグラフィックのカメラ設定でY軸基準。スプライトの設定でソートポイントをピボットにして、位置変更。忘れそう。
「Scene ビューの右上に保存ボタン」とは何か分からなかったが、
注: Auto Save ボタンはデフォルトでオンになっていますの注意書きがあった。
プロジェクト設定のエディターに「プレハブモード-自動保存を許可」があるので、この設定ぽいのでチェックを外すと確かに「保存」ボタンが出てきた。

ワールドとのインタラクション 動きをブロックする

  • Rigidbodyで物理演算対象にする
  • コライダーで衝突判定を付ける
  • 衝突時にキー押しっぱなしてる時のブルブルを回避するスクリプトの書き方
  • 背景のタイルへのコライダーの追加+複合コライダー

Rigidbodyで重力、回転の制御
コライダーで衝突判定

ヒント:シーン内の Ruby のインスタンスに変更を加えたが、プレハブではない場合は、ドロップダウンの Overrides メニューを使用して、プレハブに変更を適用してください。
間違えてシーンに変更を加えた場合は、シーン側をプレハブに上書きはできるが、プレハブ設定をシーンに上書きは出来ないっぽい。
(シーンから削除して、プレハブをもう一度Assetsから持ってこればいいだけだから?)

ソースコードの解説がパットは分かりにくいけど
最初にキャラを動かすコードを書いた時はTransformを使って位置変更をしていたけれど、
Rigidbodyを持っている場合は同時にRigidbodyの場所も指定してやるとよい。
アプリ本体と物理演算のフレームレート違いを吸収するためにアプリ内で定期的に実行されるFixedUpdate関数でRigidbodyは更新するが、
ユーザの入力は常に監視されているUpdateで行う、という事だと理解した。

あと、Tilemap Collider 2Dは2D物理ではなくタイルマップの中にある。(検索すれば出てくるけど)
複合コライダーは普通に2D物理の中。

ワールドとのインタラクション 収集アイテム

  • 体力を設定するコードを書く
  • 体力回復のメソッドを実行するトリガーの設定
  • トリガー起動のスクリプトを作成
  • getterメソッドの追加

途中のコード解説は簡単なので読み飛ばしたけど、
UnityにはMathf.Clampという便利メソッドがあって

sample
if( health > MAX_HEALTH){ health = MAX_HEALTH; }

みたいな事をしなくてもいいっぽいけど、メソッドを探す方法はまだ知らない。

回復アイテム用にスクリプト作成してからアタッチしようとすると、前回同様スクリプトがありませんエラーが発生。

回避方法が分からないのでインスペクターから新しくスクリプトを作成を選んでからフォルダに移動させた。
OnTriggerEnter2D(Collider2D other)
みたいな特殊な関数も、今は他に何があるか分からないが、言われるがまま書いておく。
publicじゃないメソッド呼んでてエラーが出たから修正したけど、後ろに修正のセクションがあった・・・

あとC#は15年くらい前に触って以来(古いJavaの書き方に一番慣れている)だけど、getterはこういう風に書くのか、チュートリアル作った人の流儀なのか分からんかった。
と思ったけど、これはgetterメソッドではなかった。プロパティで、こういう書き方が正しそう。

sample
    public int health { get { return currentHealth; }}
    int currentHealth;

ちょっと便利に使えるみたいなので、とりあえず存在を覚えた。

今回はここまで