Unity/UniRx/接触判定/接触2D
提供: 初心者エンジニアの簡易メモ
2dの画像UIの接触判定
- Canvas/Imageを2つ追加
- 両方にBoxColliderを追加
- 上側のImageにだけ重力としてRigitbody2Dを追加。
- ImageのInspectorのBoxColliderのxとyが1になってるので、Imageサイズと同じ(デフォルト:100)にする
これで、上側のImageがおりてきて、下のImageと接触して止まるはず。
- Imageの下側のObjectのInspectorからAddComponentで、"ObservableCollision2DTrigger"を追加
- 適当なObjectにCollider2dSceneを追加し、Imageの下側のObjectを、landTriggerに設定する
using UnityEngine; using UniRx; using UniRx.Triggers; using System; public class Collider2dScene : MonoBehaviour { [SerializeField] ObservableCollision2DTrigger landTrigger; void Start() { IObservable<Collision2D> landOnCollisionEnterAsObservable = landTrigger.OnCollisionEnter2DAsObservable(); IObservable<Collision2D> landOnCollisionStayAsObservable = landTrigger.OnCollisionStay2DAsObservable(); IObservable<Collision2D> landOnCollisionExitAsObservable = landTrigger.OnCollisionExit2DAsObservable(); landOnCollisionEnterAsObservable.Subscribe(collider => { Debug.Log("OnCollisionEnter2D collider.gameObject.name=" + collider.gameObject.name); // 接触object名 }); landOnCollisionStayAsObservable.Subscribe(collider => { Debug.Log("OnCollisionStay2D collider.gameObject.name=" + collider.gameObject.name); // 接触object名 }); landOnCollisionExitAsObservable.Subscribe(collider => { Debug.Log("OnCollisionExit2D collider.gameObject.name=" + collider.gameObject.name); // 接触object名 }); } }
UniRxを使わない場合
Unity/UIImage/Collider2d [ショートカット]