IEnumerator LaserCoroutine(GameMap.BlockInstance instance)
        {
            var obj = Instantiate(LaserPrefab);

            obj.name = "Laser";
            var laser = obj.GetComponent <FX.Laser>();

            laser.BlockInstance      = instance;
            laser.transform.parent   = instance.transform;
            laser.transform.position = instance.transform.position + DirectionVector.ToVector3() * .5f;
            laser.transform.rotation = Quaternion.FromToRotation(Vector3.right, DirectionVector);
            laser.OnTrigger         += (collider) =>
            {
                var player = collider.attachedRigidbody?.GetComponent <Player>();
                if (player)
                {
                    player.Kill();
                }
            };

            if (ActiveOnAwake)
            {
                laser.PowerOn(0.05f);
                foreach (var t in Utility.FixedTimer(ActiveTime))
                {
                    yield return(new WaitForFixedUpdate());
                }
                laser.ShutDown(0.2f);
            }

            while (true)
            {
                foreach (var t in Utility.FixedTimer(SleepTime))
                {
                    yield return(new WaitForFixedUpdate());
                }

                laser.PowerOn(0.05f);

                foreach (var t in Utility.FixedTimer(ActiveTime))
                {
                    yield return(new WaitForFixedUpdate());
                }

                laser.ShutDown(0.2f);
            }
        }
Esempio n. 2
0
 public virtual void OnTrigger(GameMap.BlockInstance instance, Collider2D collider)
 {
 }
Esempio n. 3
0
 public virtual void OnCollision(GameMap.BlockInstance instance, Collision2D collision)
 {
 }
Esempio n. 4
0
 public virtual void UpdateInstance(GameMap.BlockInstance instance)
 {
 }
Esempio n. 5
0
 public virtual void OnBlockObjectCreated(GameMap.BlockInstance instance, GameObject obj, BlockData block)
 {
 }