facebook twitter hatena line email

「Unity/UniRx/接触判定/接触2D」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(ページの作成:「==2dイメージの接触判定== #Canvas/Imageを2つ追加 #両方にBoxColliderを追加 #上側のImageにだけ重力としてRigitbody2Dを追加。 #ImageのInsp...」)
 
(2dイメージの接触判定)
行5: 行5:
 
#ImageのInspectorのBoxColliderのxとyが1になってるので、Imageサイズと同じ(デフォルト:100)にする
 
#ImageのInspectorのBoxColliderのxとyが1になってるので、Imageサイズと同じ(デフォルト:100)にする
 
これで、上側のImageがおりてきて、下のImageと接触して止まるはず。
 
これで、上側のImageがおりてきて、下のImageと接触して止まるはず。
 
+
#Imageの下側のObjectのInspectorからAddComponentで、"ObservableCollision2DTrigger"を追加
 +
#適当なObjectにCollider2dSceneを追加し、Imageの下側のObjectを、landTriggerに設定する
 
<pre>
 
<pre>
 
using UnityEngine;
 
using UnityEngine;

2023年3月6日 (月) 19:36時点における版

2dイメージの接触判定

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

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

  1. Imageの下側のObjectのInspectorからAddComponentで、"ObservableCollision2DTrigger"を追加
  2. 適当な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 [ショートカット]