/// <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); }
/// <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; } } } }
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); }