unity3d 为什么物体被排斥时会卡在墙上?

mu0hgdu0  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(185)

我做了物体的无休止运动和它对墙壁的排斥,但它并不总是正确的工作。在圆角处(有时甚至在直墙上),它只是卡住并完全停止移动,或者缓慢移动到它停止移动的点。这可能与什么有关,如何修复?
'

private void FixedUpdate()
    {
        rb.velocity = direction * normalSpeed;
        lastDirection = direction;
    }

    private void OnCollisionEnter2D(Collision2D collision)
    {
        //Repulsion from objects.
        direction = Vector3.Reflect(lastDirection.normalized, collision.GetContact(0).normal);

物体之间的距离很小,但圆似乎粘在墙上并随之移动,直到与另一个碰撞器碰撞:Example
圆圈下面的物体也有碰撞器,但是它们之间的碰撞没有被考虑,因为它们有相同的层(在设置中,我禁用了相同层上物体的碰撞)。2可以做些什么来修复这个错误,它与什么有关?
一般尺度中的物体:
Example
我试着增加墙对撞机的尺寸,试着把多边形对撞机改成盒子对撞机,连接复合对撞机,改变物体运动的机制(在这些情况下,运动可能会不正确),但结果总是一样-堵塞(粘在墙上)继续。

lmvvr0a8

lmvvr0a81#

没有更多的信息很难回答你的问题,但我可以建议如果你使用物理来移动你的物体-利用physic materials并删除在OnCollisionEnter中手动改变方向的代码。使用物理材料,你可以很容易地使你的物体从你选择的碰撞器反弹而不失去速度。

相关问题