我做了物体的无休止运动和它对墙壁的排斥,但它并不总是正确的工作。在圆角处(有时甚至在直墙上),它只是卡住并完全停止移动,或者缓慢移动到它停止移动的点。这可能与什么有关,如何修复?
'
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
我试着增加墙对撞机的尺寸,试着把多边形对撞机改成盒子对撞机,连接复合对撞机,改变物体运动的机制(在这些情况下,运动可能会不正确),但结果总是一样-堵塞(粘在墙上)继续。
1条答案
按热度按时间lmvvr0a81#
没有更多的信息很难回答你的问题,但我可以建议如果你使用物理来移动你的物体-利用physic materials并删除在OnCollisionEnter中手动改变方向的代码。使用物理材料,你可以很容易地使你的物体从你选择的碰撞器反弹而不失去速度。