android - 球碰撞 : Balls Stick Together

标签 android collision-detection

我按照 http://www.emanueleferonato.com/2007/08/19/managing-ball-vs-ball-collision-with-flash/ 的示例进行操作在 Android 上创建球碰撞,
我的代码组织如下:

int N = 6; // number of balls
for (int i=0; i<N; i++) {
    // move ball
    // as in line 10~39

    // collision detection
    for(int j=i+1; j<N; j++) {
        // as in line 66~77
    } // end for
} // end for

但是,有时我的蛋蛋可能会粘在一起(重叠)。
例子中没有出现同样的情况。
为什么?
我需要为每个球启动一个线程吗?

最佳答案

当两个球以足够的速度碰撞以致在随后的 Action 循环中它们无法完全分开时,就会出现此问题。我发现处理此问题的最佳方法是将它们之间的距离标准化为 (r1 + r2),其中 r 是检测到碰撞时球的半径。这样可以确保它们在随后的 Action 循环中分离,但如果在非常狭窄的空间中有很多球,确实有可能导致额外的碰撞。

关于android - 球碰撞 : Balls Stick Together,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6406126/

相关文章:

android - OnClickListener 按住按钮?

android - 在 recyclerview 中只显示一条评论 - Firebase

c# - 线与 AABB 矩形相交?

java - 处理冲突 - 数组查找成本高昂

uibutton - 使用 animateWithDuration 进行碰撞检测

android - 在西类牙语中,Date.getTime() 需要花费很多时间来处理

android - 如何在Android中为imageview设置颜色

安卓火力地堡 : Phone Authentication Custom Country Code

java - 自定义 View 和 ImageView 之间的像素完美碰撞检测

unity-game-engine - Unity3D : Recalculating collisions after Physics2D. IgnoreLayerCollision()?