private UnityEngine.Vector3 GetTouchPos() { UnityEngine.Vector3 pos = UnityEngine.Vector3.zero; pos.x = GfxSystem.GetTouchPointX(); pos.y = GfxSystem.GetTouchPointY(); pos.z = GfxSystem.GetTouchPointZ(); return(pos); }
public static UnityEngine.Vector3 GetTouchPos(GameObject obj) { UnityEngine.Vector3 pos = UnityEngine.Vector3.zero; pos.x = GfxSystem.GetTouchPointX(); pos.y = GfxSystem.GetTouchPointY(); pos.z = GfxSystem.GetTouchPointZ(); UnityEngine.Ray ray = Camera.main.ScreenPointToRay(pos); int layermask = 1 << LayerMask.NameToLayer("Terrains"); UnityEngine.RaycastHit[] rch = Physics.RaycastAll(ray, 200f, layermask); if (rch.Length > 0) { return(rch[0].point); } else { float height = ray.origin.y - obj.transform.position.y; float distance = Math.Abs(height * ray.direction.magnitude / ray.direction.y); UnityEngine.Vector3 height_pos = ray.GetPoint(distance); return(height_pos); } }