我正在使用Unity的Vector3方法,ScreenToWorldPoint。
简而言之,我可以点击GameObject上的任意位置并获取游戏中点击所在的Vector3。然而,我获得的结果是直接在相机前面的Vector3,而不是我真正点击场景中给定GameObject的表面。
我想要确切地点击GameObject表面上的坐标。
答案 0 :(得分:2)
您希望从相机到对象进行Raycast。有关详情Manual: Rays from the camera
,请参阅帮助页面using UnityEngine;
using System.Collections;
public class ExampleScript : MonoBehaviour {
public Camera camera;
void Start(){
RaycastHit hit;
Ray ray = camera.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit)) {
Transform objectHit = hit.transform;
// Do something with the object that was hit by the raycast.
}
}
}
答案 1 :(得分:0)
要获得Vector3的确切位置,请单击GameObject的表面,使用以下代码:
RaycastHit hit;
Ray ray;
Camera c = Camera.main;
Vector3 hitPoint;
Rect screenRect = new Rect(0, 0, Screen.width, Screen.height);
if (screenRect.Contains(Input.mousePosition))
{
if (c != null)
{
ray = c.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
// If the raycast hit a GameObject...
hitPoint = hit.point; //this is the point we want
}
}
}
我们在屏幕上用鼠标创建一条光线并将其投射到世界中,以计算鼠标在场景中的确切位置。