Unity : Input systemからのtouch position から触ったgameobjectを判定

Unity

スワイプだけ実装していたのですが
パズルゲームでスワイプのstart positionでタッチしたのがどこかを使おうと思い。

inputsystemを使ってみた話はこちら

Unity : UnityEngin.InputSystemで入力してみる!keydown / swipe ジェスチャーをチェック!
inputsystemパッケージをインストールpackage manager で input systemをインストールします。 1.5.1でした。警告が出ました今までの inputシステムが使えな...

マウスダウンの場合(タッチでも同じ

EventSystemsを使います。

using UnityEngine.EventSystems;
void Update()
{
	if (Input.GetMouseButtonDown(0))
	{
	
		PointerEventData _pointer = new PointerEventData(EventSystem.current);
		_pointer.position = Input.mousePosition;

		Debug.Log("mouse position " + Mouse.current.position.ReadValue());

		List<RaycastResult> _results = new List<RaycastResult>();

		EventSystem.current.RaycastAll(_pointer, _results);
		Debug.Log(_results.Count);
// gameobjectのタグを見てみます。
		foreach(RaycastResult r in _results)
		{
			Debug.Log(r.gameObject.tag);
		}
	}
}

こんな感じで出来ました◎

重なっている部分はすべて反応するので、必要なものをタグでチェックしています。

UI の gameobjectもEventSystemで問題なく反応しているようです。

お気軽にコメントください!

スパム対応のためコメント認証に数日かかることがありますが、お気軽にコメントいただけると嬉しいです^^

コメント

タイトルとURLをコピーしました