以下の内容はhttps://simplestar-tech.hatenablog.com/entry/2024/04/07/235517より取得しました。


Unity 便利アセット Joystick Pack マルチタップに改造

https://assetstore.unity.com/packages/tools/input-management/joystick-pack-107631?locale=ja-JP

そう、すばらしいアセットと多くの方が賞賛してる
ただし、二つ配置すると、とたんにドラッグ操作が行えなくなり
使い物にならない

今回マルチタップ化できたので、改造方法を記録しておきます

編集するファイルは Base の
Assets\Joystick Pack\Scripts\Base\Joystick.cs
ファイルのみ

まず IDragHandler インタフェース継承をやめさせます
OnDrag イベントハンドラの引数の OnDrag(PointerEventData eventData) は OnDrag(Vector2 touchPosition) に書き換え
eventData.position を touchPosition に差し替えておきます

既存の利用箇所 OnPointerDown での呼び出しをつぎのようにし
OnDrag(eventData.position);

まずはビルドを通します。

次に OnPointerDown にて
this.pointerId = eventData.pointerId;
こんな感じで pointerId (Touch の fingerId) を記録しておき

	void Update()
	{
		foreach (var touch in Input.touches)
		{
			if (touch.fingerId == this.pointerId)
			{
				OnDrag(touch.position);
				break;
			}
		}
	}

Update にて fingerId が一致する touch の position を OnDrag に流します
OnPointerUp で this.pointerId を -1 などに初期化することで
既存の OnDrag の機能を残しつつ、複数の fingerId を識別し、マルチタップに対応した Joystick が完成します

実機で確認して動作を確認できたため
これにて完成と思います

エディタ実行では touches は得られないですが
何かエミュレートする案を適用して置くのも良いかもしれませんね




以上の内容はhttps://simplestar-tech.hatenablog.com/entry/2024/04/07/235517より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14