【UnityTips】マウスでオブジェクトをドラッグ&ドロップしたい! | ゲームを作りたいです……(←初心者&おバカ)
HOME   »   スポンサー広告  »  スポンサーサイトunitytips  »  【UnityTips】マウスでオブジェクトをドラッグ&ドロップしたい!
RSSフィード


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


ども、ゴコーです。

昨日年内最後の行事がありました。
これでやっと肩の荷が下りた-。
でも、例の恩師の方に頼まれたアプリって奴が意外と大変だったりしてます。
解決のため、ついにプログラミングの中にがっつりC#を組み込む時が来たのか…
始めて触るようなもんだからすっごく怖いんですが、そもそももうちょっと早めにやっとけばブロック崩しでも楽できたのにとか思ったりしてます…

まあいいや、行きまーす。
実はこれはUnityの公式Q&Aみたいなところに答えが出てました。
いつも通りC#版ですねー。

void OnMouseDown()
{
screenPoint = Camera.main.WorldToScreenPoint(scanPos);

offset = scanPos - Camera.main.ScreenToWorldPoint(
new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
}

void OnMouseDrag()
{
Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);

Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint) + offset;
transform.position = curPosition;
}

いつもの初心者の方向けの知ったかぶり解説もどきいりますかね?
一応書いときます。
なにこの長いコード?

なぜマウスクリックの場所に追従させるのに上記のように何行も記述する必要があるんでしょうか。
マウスの位置(Input.mousePosition)を引数に物体の場所(transform.position)を移動させたらええやん?とか思うかもしれません。
そう思っていた時期が僕にもありました…。

しかし、マウスの場所というのはスクリーンに表示されている見た通りの場所と実際にクリックする場所では、ずれがあるんです。
詳しくはめんどくさいので書きませんが、そういうものみたいです。
詳しく知りたい方は「透視変換」などでググってみると良いかもしれません。
今回の場合、「逆透視変換」というもので見た目と実際のマウスの場所のずれを修正しているのでこんなコードの長さになっているんですねー。

以上、マウスのドラッグについてでしたー。

では、また。
…もしかしたら年末最後の記事になるかも。
関連記事
Relate Entry
Comment
Trackback
Comment form
本のご紹介

まじで僕の起爆剤です。
アプリの案などためになる情報で一杯です。
僕は心は感謝で一杯です。
人気記事らしいよ
スポンサードリンク
あくせすかうんた
プロフィール


ども、ミカン好きの学生、ゴコーです。
一緒にアプリ作りしませんか?
寄り道が多いですが、
ご了承下さいm(_ _)m
詳細はこちらまでどうぞ


フォローでブログの更新状況をチェック!

上に戻る?
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。