読者です 読者をやめる 読者になる 読者になる

The jonki

呼ばれて飛び出てじょじょじょじょーんき

Unity タッチした部分にオブジェクトを正確に移動する

例えばFloorというGameObject上に立つキャラクターをタッチした位置に移動するときなどに。
ScreenToWorldPositionというのはあるけど、Z軸の値を使うときはどうするか考える必要がある。それよりもタッチした座標からRayを作ってとFloorオブジェクトと交差するか調べてその座標をキャラクターの座標にセットするほうが良さそう。

色々なオブジェクトが転がっているようであれば、RaycasのlayerMaskで特定のlayerを指定してRaycastすれば良い。

using UnityEngine;
using System.Collections;

public class TouchDetector: MonoBehaviour {
	public GameObject targetObject;
	
	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		if (Input.GetMouseButtonDown(0))
		{		
			Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
			RaycastHit hit;
			if (Physics.Raycast (ray, out hit, Mathf.Infinity)) {
				var targetPos = new Vector3(hit.point.x, hit.point.y, hit.point.z); 
				targetObject.transform.position = targetPos;
			}
		}
	}
}