我让我的播放器发送了一个光线投影来检查另一个游戏对象让我们说它是一个盒子,我想要访问盒子里的Rigidbody2D并在我点击它时对它施加压力键。有哪些方法可以处理这种情况,您认为哪种方式最有效,最灵活?
这是我到目前为止所做的工作。
RaycastHit2D hit = Physics2D.Raycast(new Vector2(transform.position.x, transform.position.y - 0.6f), new Vector2(transform.position.x, transform.position.y - 1.6f));
if(hit.collider != null && Input.GetKey(KeyCode.E))
{
// access gameobject stored to "hit" and AddForce to it's Rigidbody2D??
}
答案 0 :(得分:1)
变量hit
是RaycastHit2D的类型。 RaycastHit2D具有rigidbody
的属性,返回Rigidbody2D component of the object that was hit.因此,您可以通过hit.rigidbody
访问它。
另一种方法是使用hit.gameObject.GetComponent<Rigidbody2D>()
,但要注意GetComponent()调用对性能的影响。
要在Rigidbody2D上添加一个力,您只需提供一个Vector2和一个带AddForce() method的强制模式。然后hit.rigidbody.AddForce()
会有效。
此外,您可能需要考虑为您的Physics2D.Raycast呼叫提供正确的原点和方向。您似乎想要判断y轴中是否存在1个距离单位内的物体。如果是这种情况,方向应为Vector2.up,距离应为1.0f,类似于:Physics2D.Raycast(new Vector2(transform.position.x, transform.position.y - 0.6f), Vector2.up, 1.0f)