public void GroupCollision(ColliderGroup group) { //檢查該組有沒有移動過 if (!group.CheckHasMoved()) { return; } if (group.colliders.Count < 2) { group.colliders[0].current_colliding_objs.Clear(); return; } int group_colliders_count = group.colliders.Count; for (int i = 0; i < group_colliders_count - 1; i++) { for (int j = i + 1; j < group_colliders_count; j++) { int j_index = j % group_colliders_count; bool isColliding = CheckCollision(group.colliders[i], group.colliders[j_index]); //TODO:碰撞處理 if (isColliding) { //互相登記對方 group.colliders[i].AddCollider(group.colliders[j_index]); group.colliders[j_index].AddCollider(group.colliders[i]); } else { //TODO:檢查離開 group.colliders[i].RemoveCollider(group.colliders[j_index]); group.colliders[j_index].RemoveCollider(group.colliders[i]); } } } }