05-17-2017 09:39 PM
using UnityEngine;
public class Raycaster : MonoBehaviour
{
public Camera sourceCamera;
public bool useScreenPoint;
public bool useViewport;
public Transform viewportSphere;
public float sphereDistance;
private void Update () {
Vector3 mousePos = Input.mousePosition;
Ray ray = new Ray();
if (useScreenPoint) {
ray = sourceCamera.ScreenPointToRay(mousePos);
}
else if (useViewport) {
float normalWidth = mousePos.x / sourceCamera.pixelWidth;
float normalHeight = mousePos.y / sourceCamera.pixelHeight;
Vector3 viewMousePos = new Vector3(normalWidth, normalHeight, 0);
ray = sourceCamera.ViewportPointToRay(viewMousePos);
if (viewportSphere != null) {
viewportSphere.transform.position = ray.origin + ray.direction * sphereDistance;
}
}
Debug.DrawRay(ray.origin, ray.direction, Color.red);
}
}