facebook twitter hatena line email

Unity/UniRx/接触判定/接触2D

提供: 初心者エンジニアの簡易メモ
2023年3月6日 (月) 19:19時点におけるAdmin (トーク | 投稿記録)による版 (ページの作成:「==2dイメージの接触判定== #Canvas/Imageを2つ追加 #両方にBoxColliderを追加 #上側のImageにだけ重力としてRigitbody2Dを追加。 #ImageのInsp...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

2dイメージの接触判定

  1. Canvas/Imageを2つ追加
  2. 両方にBoxColliderを追加
  3. 上側のImageにだけ重力としてRigitbody2Dを追加。
  4. ImageのInspectorのBoxColliderのxとyが1になってるので、Imageサイズと同じ(デフォルト:100)にする

これで、上側のImageがおりてきて、下のImageと接触して止まるはず。

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