【Unity】Spriteをドラッグで動かす【EventSystem】
以前、EventSystemを使ってオブジェクトへのタッチ入力を取得しました。
そのEventSystemを使って今回はSpriteをドラッグで動かします!
実装
手順はタッチを取得したときとほぼ同じです。違うのはスクリプトの中身ぐらいです。
①MainCameraにPysics2DRaycasterをアタッチ
②EventSystemをシーンに配置
③ドラッグで動かしたいオブジェクトに以下のスクリプトとCollider2Dをアタッチ
PointerEventData.positionでドラッグ中のPointer(タッチ位置、マウスカーソルの位置)のポジションを取得できるので、それをオブジェクトのtransform.positionに代入してます。
ただし、PointerEventData.positionはスクリーン座標系なので、ワールド座標系のtransform.positionに代入するには同じワールド座標系に変換する必要があります。また、PointerEventData.positionはVector2なので、こちらで代入するZ位置を指定した方がいいです。じゃないと、思わぬ値が代入されるかもしれないです。本記事では0を代入してます。
実行結果
すごい動くよー!