Unity3D Physics.Raycast() 从不真实
Unity3D Physics.Raycast() never true
我有一个场景,其中我有一个带有精灵渲染器和附加图像的游戏对象。游戏对象有一个 2D 对撞机。当我点击图片时,我试图获得真实的读数,但它总是错误的,我不知道我做错了什么。
TapPos = GetComponent<Camera> ().ScreenToWorldPoint (new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 0));
bool SomethingTapped(){
Vector3 CanvasTapPoint = new Vector3 (TapPos.x, TapPos.y, 10);
Debug.DrawLine (TapPos, CanvasTapPoint, Color.green, 10f);
if (Physics.Raycast (TapPos,CanvasTapPoint, 20f)) {
return true;
} else
return false;
}
PS:
Debug.DrawLine 直接穿过我的精灵。
脚本在相机上,相机Z位置为-10
编辑
在 Andrew Griffin 的回复将我的代码更改为这个之后,如果有人想做同样的事情:
public Transform ObjectTapped(){
RaycastHit2D FoundObj = Physics2D.Raycast(TapPos, new Vector2(TapPos.x, TapPos.y + 1),0f);
if(FoundObj.collider != null){
Transform obj = FoundObj.transform;
return obj;
}
else{
return null;
}
}
调查Physics2D.Raycast。据我所知,Physics.Raycast 不适用于 2D 碰撞器。您必须改用 Physics2D.Raycast。
我有一个场景,其中我有一个带有精灵渲染器和附加图像的游戏对象。游戏对象有一个 2D 对撞机。当我点击图片时,我试图获得真实的读数,但它总是错误的,我不知道我做错了什么。
TapPos = GetComponent<Camera> ().ScreenToWorldPoint (new Vector3 (Input.mousePosition.x, Input.mousePosition.y, 0));
bool SomethingTapped(){
Vector3 CanvasTapPoint = new Vector3 (TapPos.x, TapPos.y, 10);
Debug.DrawLine (TapPos, CanvasTapPoint, Color.green, 10f);
if (Physics.Raycast (TapPos,CanvasTapPoint, 20f)) {
return true;
} else
return false;
}
PS:
Debug.DrawLine 直接穿过我的精灵。
脚本在相机上,相机Z位置为-10
编辑 在 Andrew Griffin 的回复将我的代码更改为这个之后,如果有人想做同样的事情:
public Transform ObjectTapped(){
RaycastHit2D FoundObj = Physics2D.Raycast(TapPos, new Vector2(TapPos.x, TapPos.y + 1),0f);
if(FoundObj.collider != null){
Transform obj = FoundObj.transform;
return obj;
}
else{
return null;
}
}
调查Physics2D.Raycast。据我所知,Physics.Raycast 不适用于 2D 碰撞器。您必须改用 Physics2D.Raycast。