Beispiel #1
0
        public override IEnumerator DoPattern(Character owner, Transform origin, MoveInteraction interaction = null)
        {
            yield return(new WaitForSeconds(interaction.timeStep.x));

            Vector3    translation    = (end - start) / (burstCount + 1);
            int        currentBurst   = 0;
            float      interval       = interaction.timeStep.y / (burstCount + 1);
            float      elapsedTime    = 0;
            float      nextBurstTime  = 0;
            GameObject particleHolder = new GameObject();

            particleHolder.transform.position = origin.position;
            particleHolder.transform.rotation = origin.rotation;
            GameObject     instance = Instantiate(bursterPrefab, particleHolder.transform);
            ParticleSystem particle = instance.GetComponent <ParticleSystem>();

            while (currentBurst < burstCount)
            {
                nextBurstTime = currentBurst * interval;
                while (elapsedTime < nextBurstTime)
                {
                    elapsedTime += Time.deltaTime;
                    yield return(null);
                }
                particle.Stop(true);
                instance.transform.localPosition = start + translation * currentBurst;
                particle.Play(true);
                currentBurst++;
            }
            Destroy(particleHolder, particle.main.duration / particle.main.simulationSpeed);
        }
Beispiel #2
0
        public override IEnumerator DoPattern(Character owner, Transform origin, MoveInteraction interaction = null)
        {
            yield return(new WaitForSeconds(interaction.timeStep.x));

            for (int i = 0; i < missileCount; ++i)
            {
                GameObject instance = GameObject.Instantiate(missileData.missilePrefab, origin.position, origin.rotation);
                instance.GetComponent <MissileInstance>().owner = owner;
            }
            yield return(null);
        }
 public MoveInteraction[] GetInteractions()
 {
     if (interactions == null)
     {
         interactions = new MoveInteraction[interactionStrings.Length];
         for (int i = 0; i < interactionStrings.Length; ++i)
         {
             interactions[i] = MoveInteraction.StringToInteraction(interactionStrings[i].Replace(" ", ""));
         }
     }
     return(interactions);
 }
Beispiel #4
0
        public override IEnumerator DoPattern(Character owner, Transform origin, MoveInteraction interaction = null)
        {
            float   elapsedTime         = 0;
            float   progression         = 0;
            float   previousProgression = 0;
            Vector3 startPoint          = origin.transform.TransformPoint(start);
            Vector3 endPoint            = origin.transform.TransformPoint(end);
            Vector3 direction           = endPoint - startPoint;

            yield return(new WaitForSeconds(interaction.timeStep.x));

            HashSet <Attackable> targets = new HashSet <Attackable>();

            while (elapsedTime < interaction.timeStep.y)
            {
                previousProgression = progression;
                elapsedTime        += Time.deltaTime;
                progression         = elapsedTime / interaction.timeStep.y;
                switch (collisionType)
                {
                case CollisionType.Capsule:
                    Damage(TargetsInCapsule(startPoint + direction * previousProgression,
                                            startPoint + direction * progression, damageAreaSize), owner, targets);
                    break;

                case CollisionType.Sphere:
                    Damage(TargetsInSphere(startPoint + direction * progression, damageAreaSize), owner, targets);
                    break;

                case CollisionType.Cube:
                    Damage(TargetsInCube(startPoint + direction * progression, damageAreaSize), owner, targets);
                    break;

                default:
                    break;
                }
                yield return(null);
            }
        }
Beispiel #5
0
 public abstract IEnumerator DoPattern(Character owner, Transform origin, MoveInteraction interaction = null);