Unity3D Physics.Raycast()从不为真
本文关键字:Physics Raycast Unity3D | 更新日期: 2023-09-27 18:03:13
我有一个场景,其中我有一个带有精灵渲染器和图像的游戏对象。游戏对象有一个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。
脚本在摄像机上,摄像机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。据我所知,是物理。光线投射不适用于2D碰撞器。必须使用Physics2D。Raycast。