首页 文章

Unity:AddTorque不起作用

提问于
浏览
4

我有一些像直立的棒子一样的障碍 . 它通过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));
           //  
        }
    }
}

我无法使用预制rigibody2D和collider2D设置附加屏幕(此stackoverflow上需要声望10)

Rigibody2D

质量:1

线性拖动:0

角度阻力:0.05

重力等级:1

IsKinematic:是的

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

Collider2D

IsTrigger:false

我究竟做错了什么?

2 回答

  • 0

    您的扭矩可能太低了 . 尝试将其提升至数千甚至更高 .

    尝试增加之前为我工作的rigidbody.maxAngularVelocity

  • 2

    GameObject.rigidbodyGameObject.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));
            }
        }
    }
    

相关问题