Unity3d 统一性:AddTorque不';行不通

Unity3d 统一性:AddTorque不';行不通,unity3d,Unity3d,我有一些像棍子一样直立的障碍物。它是通过rigibody2d(-4,0)中的速度向量移动的。我有一个英雄,他总是呆在游戏屏幕的中央。当英雄与棍子相撞时,我希望障碍物随着一些旋转飞走,这取决于碰撞点(就像物理定律一样,如果碰撞点靠近边缘,则扭矩更大) 但是,rigibody2D上的AddTorque不起作用,尽管AddForce工作正常 有冲突代码 void OnCollisionEnter2D(Collision2D other) { if (other.collider.tag ==

我有一些像棍子一样直立的障碍物。它是通过rigibody2d(-4,0)中的速度向量移动的。我有一个英雄,他总是呆在游戏屏幕的中央。当英雄与棍子相撞时,我希望障碍物随着一些旋转飞走,这取决于碰撞点(就像物理定律一样,如果碰撞点靠近边缘,则扭矩更大)

但是,rigibody2D上的AddTorque不起作用,尽管AddForce工作正常

有冲突代码

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));
           //  
        }
    }
}
我无法使用预置rigibody2D和碰撞R2D设置附加屏幕(此stackoverflow需要声誉10)

Rigibody2D

质量:1

线性阻力:0

角阻力:0.05

重力比例尺:1

是的

所有冻结位置和旋转都是错误的

碰撞

伊斯特里格:错

我做错了什么?

并且已经被弃用了。尝试改用
GetComponent()

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));
        }
    }
}
无效OnCollisionInter2D(碰撞2D其他)
{ 
if(other.collider.tag==“Block”)
{
如果(可投资){
other.collider.isTrigger=真;
Rigidbody2D rb=other.gameObject.GetComponent();
rb.iskinetic=false;
rb.附加扭矩(100);
rb.AddForce(新向量2(200,50));
}
}
}

您的扭矩可能太低。尝试将其增加到数千甚至更高


还可以尝试增加以前对我有效的

Only:Rigidbody2D rb=other.gameObject.GetComponent();但它仍然不能工作集10000000,不是吗。。maxAngularVelocity不适用于RigidBody2DY您是否已将
运动学设置为
,然后在代码中将其设置为
?为什么不把它关起来?因为我希望在碰撞前障碍物只能水平移动