using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Diagnostics;
using System.IO;
public class testTransform : MonoBehaviour {
void Start ()
{
//if camera's "Near Plane=0.01" and "Position=(0,0,0)" the 11*11 line matrix will correct
//if camera's "Near Plane=0.01" and "Position=(200,0,0)" the 11*11 line matrix will incorrect, result is 4*11 line matrix, (x=4, y=11)
//if camera's "Near Plane=0.3" and "Position=(200,0,0)" the 11*11 line matrix will correct
//test step:
//1. run
//2. mouse click on game screen
//3. in "Scene" locate "cube", and watch the 11*11 line matrix result
var camera = Camera.main;
camera.nearClipPlane = 0.01f;
camera.transform.position = new Vector3(200,0,0);
}
void Update () {
if (Input.GetMouseButtonDown(0))
{
var camera = Camera.main;
var pt0 = camera.transform.position;
var screenPoint = Input.mousePosition;
var viewport = screenPoint;
viewport.x /= Screen.width;
viewport.y /= Screen.height;
viewport.z = 100;
//create a cube to help locate in scene
var pt0_world = camera.ViewportToWorldPoint(viewport);
var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
cube.name = "cube";
cube.transform.position = pt0_world;
cube.GetComponent<Renderer>().material.color = Color.white;
//create 11*11 line matrix
for (float x = -5; x <= 5; x++)
{
for (float y = -5; y <= 5; y++)
{
var pt = viewport;
pt.x += x * 0.0001f;
pt.y += y * 0.0001f;
var pt1 = camera.ViewportToWorldPoint(pt);
UnityEngine.Debug.DrawLine(pt0, pt1, Color.yellow, 100);
//var ray2 = camera.ViewportPointToRay(pt);
//UnityEngine.Debug.DrawRay(ray2.origin, ray2.direction * 100, Color.yellow, 100, true);
}
}
}
}
}