コード例 #1
0
        protected override void TriggerSwitch(HitableType expectedHitType)
        {
            if (hitType != HitableType.BOTH && hitType != expectedHitType)
            {
                return;
            }

            if (flag)
            {
                flag.SetFlag(true);
            }
            foreach (ASwitchEvent switchEvent in switchEvents[index].events)
            {
                if (permanent)
                {
                    switchEvent.SetState(permanentState);
                    switchEvent.SetPermanent();
                }
                else
                {
                    switchEvent.Trigger();
                }
            }
            StartCoroutine(AnimateSwitch());
        }
コード例 #2
0
        public void TriggerSwitch(SwitchType expectedType, HitableType expectedHitType = HitableType.BOTH)
        {
            //Check if correct switch and if its active
            if (expectedType != type)
            {
                return;
            }
            if (activated)
            {
                return;
            }

            //Call Trigger
            TriggerSwitch(expectedHitType);

            //Play any cutscene
            if (hasCutscene)
            {
                StartCoroutine(CutsceneManager.cutsceneManager.PlayCutscene(scenes));
            }

            //Index, and make inactive if permanent
            index++;
            if (index >= switchEvents.Length)
            {
                index = 0;
            }
            if (index == 0 && permanent)
            {
                activated = true;
            }
        }
コード例 #3
0
 public void Damage(HitableType hitType, int damage)
 {
     if (damagedBy == HitableType.BOTH || damagedBy == hitType)
     {
         health -= damage;
         if (health <= 0)
         {
             DestroyDestructable();
         }
         else
         {
             ShakeParticles();
         }
     }
 }
コード例 #4
0
        protected override void TriggerSwitch(HitableType expectedHitType)
        {
            if (index == 1)
            {
                BoxCollider2D box = GetComponent <BoxCollider2D>();
                foreach (RaycastHit2D hitInfo in Physics2D.BoxCastAll(box.bounds.center, box.bounds.extents * 2, 0, Vector2.zero))
                {
                    if ((hitInfo.transform.CompareTag("Cell") && weightType == WeightSwitchType.LIGHT) || hitInfo.transform.CompareTag("Block"))
                    {
                        return;
                    }
                }
            }

            AnimateSwitch();

            foreach (ASwitchEvent switchEvent in switchEvents[index].events)
            {
                switchEvent.Trigger();
            }
        }
コード例 #5
0
 protected abstract void TriggerSwitch(HitableType expectedHitType);