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 [ショートカット]