我做了一个非常简单的程序,它在屏幕的边缘创建边缘碰撞,然后启动一个带有冲力的circleCollider2d的椭圆。
我将所有的碰撞器(边和圆)设置为使用反弹材质,并将反弹度设置为1.0 (无限反弹)。
我有一个奇怪的问题,随着时间的推移,其中一个速度轴收敛到0。例如
this.GetComponent<Rigidbody2D> ().AddForce (new Vector2 (100, 100), ForceMode2D.Impulse);发生的情况是,对象将开始以对角线的方式移动,但如果有足够的反弹,速度将在(100,0)和(-100,0)之间交替。当x轴变为0或y轴变为0时,都可能发生这种情况。这取决于哪一个在开始时更高。
我不确定为什么会发生这种情况。基本上在视觉上,物体将开始反弹,大约10次左右的反弹后,它将只是在一条直线上来回反弹,而不是保持另一条轴。我不知道为什么它会这么做。我没有任何约束(我也尝试约束Z轴旋转,但没有任何效果)。
所有边碰撞器以及圆碰撞器上的bouncyness都设置为1.0。刚体的质量为1,并且所有阻力系数也设置为0。其目的是让它无休止地反弹。
发布于 2016-10-23 06:22:04
我将在这里回答我自己的问题,因为当我观察到旋转的行为时,我才意识到为什么会发生这种情况。我完全没有想到摩擦力会参与其中,特别是在这种情况下,摩擦力每次都会导致相同的模拟。
除了将反弹度设置为1之外,还必须将摩擦力设置为0。
https://stackoverflow.com/questions/40197428
复制相似问题