「Unity/UniRx/接触判定/接触2D」の版間の差分
提供: 初心者エンジニアの簡易メモ
(ページの作成:「==2dイメージの接触判定== #Canvas/Imageを2つ追加 #両方にBoxColliderを追加 #上側のImageにだけ重力としてRigitbody2Dを追加。 #ImageのInsp...」) |
|||
(同じ利用者による、間の2版が非表示) | |||
行1: | 行1: | ||
− | == | + | ==2dの画像UIの接触判定== |
#Canvas/Imageを2つ追加 | #Canvas/Imageを2つ追加 | ||
#両方にBoxColliderを追加 | #両方にBoxColliderを追加 | ||
行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:39時点における最新版
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 [ショートカット]