示例#1
0
    void OnDestroy()
    {
        foreach (WeightPadTrigger pad in weightPads)
        {
            if (pad && pad.rigids.ContainsKey(rigid))
            {
                print("Weight pad exit from " + pad.gameObject.name);
                pad.rigidsOnPad.Remove(rigid);
                pad.rigids.Remove(rigid);

                foreach (Rigidbody2D r in stackWith)
                {
                    if (!r)
                    {
                        continue;
                    }

                    StackWeightManager s = r.GetComponent <StackWeightManager>();
                    s.stackAmount--;
                    if (s.stackAmount <= 0)
                    {
                        pad.rigidsOnPad.Remove(r);
                        pad.rigids.Remove(r);
                    }
                }
                stackWith.Clear();
            }
        }
    }
示例#2
0
    IEnumerator DelayRemove(Rigidbody2D rigid)
    {
        float timestamp = Time.time;

        while (Time.time - timestamp <= removeDelayTime && !rigidsOnPad.Contains(rigid))
        {
            yield return(null);
        }
        if (rigid && rigids.ContainsKey(rigid) && !rigidsOnPad.Contains(rigid))
        {
            rigids.Remove(rigid);
            StackWeightManager stackManager = rigid.GetComponent <StackWeightManager>();
            if (stackManager)
            {
                stackManager.isOnPad = false;
                foreach (Rigidbody2D r in stackManager.stackWith)
                {
                    if (!r)
                    {
                        continue;
                    }
                    StackWeightManager s = r.GetComponent <StackWeightManager>();
                    s.stackAmount--;
                    if (s.stackAmount <= 0)
                    {
                        rigidsOnPad.Remove(r);
                        rigids.Remove(r);
                    }
                }
                stackManager.stackWith.Clear();
            }
        }
    }
 // Start is called before the first frame update
 void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
示例#4
0
    void OnCollisionEnter2D(Collision2D col)
    {
        Rigidbody2D rigid = col.collider.GetComponent <Rigidbody2D>();

        if (rigid)
        {
            rigidsOnPad.Add(rigid);
            StackWeightManager stackManager = rigid.GetComponent <StackWeightManager>();
            if (stackManager)
            {
                stackManager.isOnPad = true;
            }
        }
    }
示例#5
0
    void OnCollisionEnter2D(Collision2D col)
    {
        Rigidbody2D colRigid = col.collider.GetComponent <Rigidbody2D>();

        if (colRigid)
        {
            foreach (WeightPadTrigger pad in weightPads)
            {
                if (pad.rigids.ContainsKey(colRigid))
                {
                    print("Weight pad stay in " + pad.gameObject.name);
                    if (!pad.rigidsOnPad.Contains(rigid))
                    {
                        StackWeightManager stackedPad = colRigid.GetComponent <StackWeightManager>();
                        stackedPad.stackWith.Add(rigid);
                        stackAmount++;
                        pad.rigidsOnPad.Add(rigid);
                        pad.rigids[rigid] = Vector3.down;
                    }
                }
            }
        }
    }