我有一些像直立的棒子一样的障碍。它通过rigibody2d(-4,0)中的速度矢量移动。我有一个永远留在游戏屏幕中心的英雄。当英雄与一根棍子碰撞时,我希望那个障碍物随着一些旋转而飞走,这取决于碰撞点(如物理定律,如果碰撞点靠近边缘,则更多扭矩)。
但是,虽然AddForce工作正常,但rigibody2D上的AddTorque不起作用。
有碰撞代码
void OnCollisionEnter2D(Collision2D other)
{
if (other.collider.tag == "Block")
{
if (InvBonusEnabled) {
other.collider.isTrigger = true;
other.rigidbody.isKinematic = false;
other.rigidbody.AddTorque(100); //simple test doesn't work
other.rigidbody.AddForce(new Vector2(200, 50));
//
}
}
}
我无法使用prefab rigibody2D和collider2D设置附加屏幕(此stackoverflow上需要声望10)
Rigibody2D
质量:1
线性拖动:0
角度阻力:0.05
重力比例:1
IsKinematic:True
所有冻结位置和轮换均为假
Collider2D
IsTrigger:false
我做错了什么?
答案 0 :(得分:2)
答案 1 :(得分:0)
GameObject.rigidbody
和GameObject.rigidbody2D
已被弃用。请尝试使用GetComponent<Rigidbody2D>()
:
void OnCollisionEnter2D(Collision2D other)
{
if (other.collider.tag == "Block")
{
if (InvBonusEnabled) {
other.collider.isTrigger = true;
Rigidbody2D rb = other.gameObject.GetComponent<Rigidbody2D>();
rb.isKinematic = false;
rb.AddTorque(100);
rb.AddForce(new Vector2(200, 50));
}
}
}