示例#1
0
    static IEnumerator delayComplete(BaseMonoBehaviour content, JigsawContainerCpt[] cptList, JigsawContainerCpt tempCpt, float mergeTime)
    {
        foreach (JigsawContainerCpt itemCpt in cptList)
        {
            Rigidbody2D itemRB = itemCpt.GetComponent <Rigidbody2D>();
            if (itemCpt != null)
            {
                //设置质量为0 防止动画时错位
                itemRB.velocity = Vector3.zero;
                //顺便冻结缸体
                itemRB.constraints = RigidbodyConstraints2D.FreezeAll;
            }
            CompositeCollider2D itemCollider = itemCpt.GetComponent <CompositeCollider2D>();
            if (itemCollider != null)
            {
                UnityEngine.Object.Destroy(itemCollider);
            }
        }
        yield return(new WaitForEndOfFrame());

        for (int i = 0; i < cptList.Length; i++)
        {
            if (mergeTime > 5)
            {
                tempCpt.transform.position      = tempCpt.startPosition;
                tempCpt.transform.localRotation = tempCpt.startRotation;
            }
            JigsawContainerCpt itemCpt = cptList[i];
            itemCpt.isSelect = false;
            // 添加拼图碎片到容器里
            if (cptList[i] != tempCpt)
            {
                tempCpt.addJigsawList(itemCpt.listJigsaw);
                //位置纠正
                tempCpt.jigsawLocationCorrect(mergeTime, itemCpt.listJigsaw);
                // 最后删除当前容器
                UnityEngine.Object.Destroy(itemCpt.gameObject);
            }
            yield return(new WaitForSeconds(0.1f));
        }
        tempCpt.mergeDeal(mergeTime);
    }
    /// <summary>
    /// 碰撞处理
    /// </summary>
    /// <param name="collision"></param>
    private void collisionCheck(Collider2D collision)
    {
        if (!isOpenMergeCheck)
        {
            return;
        }
        if (!isSelect)
        {
            return;
        }
        //获取被撞物体和其父对象
        JigsawContainerCpt collisionJCC = collision.gameObject.GetComponent <JigsawContainerCpt>();

        if (collisionJCC == null)
        {
            return;
        }
        if (checkMerge(collisionJCC))
        {
            //设置不可在拖拽
            CommonData.IsDargMove = false;
            isSelect = false;
            //设置质量为0 防止动画时错位
            Rigidbody2D collisionRB = collisionJCC.GetComponent <Rigidbody2D>();
            Rigidbody2D thisRB      = gameObject.GetComponent <Rigidbody2D>();
            if (collisionRB != null && thisRB != null)
            {
                collisionRB.velocity = Vector3.zero;
                thisRB.velocity      = Vector3.zero;
                //顺便冻结缸体
                collisionRB.constraints = RigidbodyConstraints2D.FreezeAll;
                thisRB.constraints      = RigidbodyConstraints2D.FreezeAll;
                // 添加拼图碎片到碰撞容器里
                collisionJCC.addJigsawList(listJigsaw);
                collisionJCC.jigsawLocationCorrect(mergeAnimDuration, listJigsaw);
            }
            collisionJCC.mergeDeal(mergeAnimDuration);
            // 最后删除当前容器
            Destroy(gameObject);
        }
    }