[Unity]オブジェクトをドラッグして移動する
オブジェクトをドラッグするためには、スクリーンのマウス座標とドラッグするオブジェクト間の距離を求める必要があります。
この距離をドラッグの判定のたびにマウス座標へ適用し変換したものがオブジェクトの移動先座標となります。
参考URL:[Unity] マウスドラッグでオブジェクトを移動させる
この距離をドラッグの判定のたびにマウス座標へ適用し変換したものがオブジェクトの移動先座標となります。
//オブジェクトをドラッグする処理
function OnMouseDown() {
//カメラの座標を画面座標系で取得
this.screenPoint = Camera.main.WorldToScreenPoint(transform.position);
//アタッチしたオブジェクトの座標と画面内のタッチ座標との差分を求める(2つの座標の間のベクトルを求める)
this.offset = transform.position
- Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));
}
function OnMouseDrag() {
//移動したマウスの座標を代入
var currentScreenPoint : Vector3 = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
//移動したマウス座標をワールド座標へ変換し,先ほど求めた offset を適用してアタッチしたオブジェクトの座標に直す
var currentPosition : Vector3 = Camera.main.ScreenToWorldPoint(currentScreenPoint) + this.offset;
//セットする
transform.position = currentPosition;
}
参考URL:[Unity] マウスドラッグでオブジェクトを移動させる