すとーぶろぐ

主にUnity。実質備忘録。

【Unity】Spriteをドラッグで動かす【EventSystem】

 

以前、EventSystemを使ってオブジェクトへのタッチ入力を取得しました。

t-stove-k.hatenablog.com

 

そのEventSystemを使って今回はSpriteをドラッグで動かします! 

 

実装

手順はタッチを取得したときとほぼ同じです。違うのはスクリプトの中身ぐらいです。

①MainCameraにPysics2DRaycasterをアタッチ

②EventSystemをシーンに配置

③ドラッグで動かしたいオブジェクトに以下のスクリプトとCollider2Dをアタッチ

 

PointerEventData.positionでドラッグ中のPointer(タッチ位置、マウスカーソルの位置)のポジションを取得できるので、それをオブジェクトのtransform.positionに代入してます。

ただし、PointerEventData.positionはスクリーン座標系なので、ワールド座標系のtransform.positionに代入するには同じワールド座標系に変換する必要があります。また、PointerEventData.positionはVector2なので、こちらで代入するZ位置を指定した方がいいです。じゃないと、思わぬ値が代入されるかもしれないです。本記事では0を代入してます。

 

実行結果

f:id:t_stove_k:20180708010051g:plain

すごい動くよー!