/// <summary>
        /// Plays an audio clip in 3D
        /// </summary>
        /// <param name="clip">clip to play</param>
        /// <param name="position">the position to play this sound at</param>
        /// <param name="looping">is this clip looping?</param>
        /// <param name="volume">scale the clips volume</param>
        /// <param name="pitch">pitch to play the sound at</param>
        /// <param name="pitchVariance">variance in pitch for this clip. 0 will have no variance.</param>
        /// <param name="spatialBlend">spatial blending. 0f = 2D, 1f = 3D</param>
        /// <param name="rollOffMode">the roll off mode to use for this source.</param>
        /// <returns></returns>
        public static AudioSource Play3D(AudioClip clip,
                                         Vector3 position,
                                         bool looping                 = false,
                                         float volume                 = 1f,
                                         float pitch                  = 1f,
                                         float pitchVariance          = 0f,
                                         float spatialBlend           = 1f,
                                         AudioRolloffMode rollOffMode = AudioRolloffMode.Logarithmic)
        {
            var source = Instance.GetNext();

            source.loop         = looping;
            source.spatialBlend = spatialBlend;
            source.rolloffMode  = rollOffMode;
            source.pitch        = pitch + KitRandom.RandomSign() * pitchVariance;

            var go = source.gameObject;

            go.SetActive(true);

            var callback = source.GetComponent <AudioSourceCallback>();

            callback.OnStop.AddListener(s =>
            {
                callback.OnStop.RemoveAllListeners();
                s.gameObject.SetActive(false);
            });

            go.transform.position = position;

            source.clip   = clip;
            source.volume = volume;
            source.Play();
            return(source);
        }
        /// <summary>
        /// Plays an audio clip in 2D
        /// </summary>
        /// <param name="clip">clip to play</param>
        /// <param name="looping">is this clip looping?</param>
        /// <param name="volume">scale of the clips volume</param>
        /// <param name="pitch">pitch to play the sound at</param>
        /// <param name="pitchVariance">variance in pitch for this clip. 0 will have no variance.</param>
        /// <returns></returns>
        public static AudioSource Play2D(AudioClip clip,
                                         bool looping        = false,
                                         float volume        = 1f,
                                         float pitch         = 1f,
                                         float pitchVariance = 0f)
        {
            var source = Instance.GetNext();

            source.spatialBlend = 0f;
            source.loop         = looping;
            source.pitch        = pitch + KitRandom.RandomSign() * pitchVariance;

            source.gameObject.SetActive(true);

            var callback = source.GetComponent <AudioSourceCallback>();

            callback.OnStop.AddListener(s =>
            {
                callback.OnStop.RemoveAllListeners();
                s.gameObject.SetActive(false);
            });
            source.clip   = clip;
            source.volume = volume;
            source.Play();
            return(source);
        }
Esempio n. 3
0
        /// <summary>
        /// Randomizes the parameters being targeted
        /// </summary>
        public void Randomize()
        {
            foreach (var data in ParameterData)
            {
                if (Animator.HasParameterWithType(data.ParameterKey, data.ParameterType))
                {
                    float value;
                    if (data.OverrideRange)
                    {
                        value = Random.Range(data.MinimumValue, data.MaximumValue);
                    }
                    else
                    {
                        value = Random.Range(MinimumValue, MaximumValue);
                    }

                    switch (data.ParameterType)
                    {
                    case AnimatorControllerParameterType.Float:
                        Animator.SetFloat(data.ParameterKey, value);
                        break;

                    case AnimatorControllerParameterType.Int:
                        Animator.SetInteger(data.ParameterKey, Mathf.RoundToInt(value));
                        break;

                    case AnimatorControllerParameterType.Bool:
                        Animator.SetBool(data.ParameterKey, KitRandom.CoinToss());
                        break;

                    case AnimatorControllerParameterType.Trigger:
                        var set = KitRandom.CoinToss();
                        if (set)
                        {
                            Animator.SetTrigger(data.ParameterKey);
                        }
                        else
                        {
                            Animator.ResetTrigger(data.ParameterKey);
                        }

                        break;
                    }
                }
            }
        }
Esempio n. 4
0
        public override void Attack()
        {
            if (!BeamAttack.HasFinishedFiring || !ChargeAttack.HasFinishedFiring)
            {
                return;
            }

            var coinToss = KitRandom.CoinToss();

            if (coinToss)
            {
                BeamAttack.Fire(transform.position.DirectionTo(Target.transform.position));
            }
            else
            {
                ChargeAttack.Fire(transform.position.DirectionTo(Target.transform.position));
            }
        }
 private void DoScale()
 {
     transform.localScale += KitRandom.Vector3(ScaleMinOffset, ScaleMaxOffset);
 }
 private void DoRotation()
 {
     transform.rotation *= KitRandom.Rotation(RotationMinOffset, RotationMaxOffset);
 }
 private void DoPosition()
 {
     transform.localPosition += KitRandom.Vector3(PositionMinOffset, PositionMaxOffset);
 }