OnTriggerEnter2Dで反発処理

昨日の解決編。
やりたいことは、床に衝突した時と左右の壁に衝突した時で異なる反発係数を適応したい。
床と左右の壁で処理を変えるため、左右の壁ではscriptで反発処理をするように変更。

左右の壁のBox Collider 2Dのis Triggerをチェック。

is TriggerをチェックするとCollider2Dをアタッチしたオブジェクト同士でもすり抜けるようになる。
その場合、衝突時にOnTriggerEnter2D、衝突中はフレームごとにOnTriggerStay2D、衝突終了時OnTriggerExit2Dが呼び出される。

反発させたいオブジェクト、Enemyにアタッチしたscript、Enemy.csにコードを書く。

  void OnTriggerEnter2D () {
    // x成分のみ反転
    rigidbody2D.velocity = new Vector2(-rigidbody2D.velocity.x, rigidbody2D.velocity.y);
  }

これで左右の壁に衝突した時はx成分が反転するだけ(実質、反発係数は1)、床に衝突した時はPhysics2DMaterialに設定した反発係数が適応される。