コード例 #1
0
    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]);
                }
            }
        }
    }