所以我是Unity的新手,我确信我错过了一个简单的步骤,但由于某种原因在网上找了一段时间后我找不到解决方案。
屏幕上有两个物体,玩家和敌人。两者都附有Rigidbody2D和Box Collider 2D。在Box Collider 2D上我点击了is triggered
On Rigidbody2D,我点击了Is Kinematic
。在玩家我有一个简单的动作脚本。在敌人对象上我有这个:
void Update () {
RaycastHit2D hit = Physics2D.Raycast(transform.localPosition,transform.right,Mathf.Infinity);
Debug.DrawRay(transform.localPosition,transform.right);
if (hit)
Debug.Log(hit.collider);
}
现在我出于某种原因将玩家移到对象if (hit)
上
是的,但如果我将玩家移到右侧的任何地方,那就不是真的了。这是什么原因?谢谢。
答案 0 :(得分:1)
首先,您不需要Rigidbody进行光线投射检测,只需要碰撞器。其次,Physics2D.Raycast使用世界位置,而不是本地位置,所以替换" transform.localPosition"使用" transform.position"如果转换是某种东西的孩子,这会让它变得很乱。请记住,你是从变换的右侧发送光线投射,所以也许它没有击中任何东西,你得到的值实际上是正确的。