/// <summary> /// Called by animation events. /// </summary> /// <param name="frontFoot">Has a value of 1 when it's a front foot stepping and 0 when it's a back foot.</param> void PlayStep(int frontFoot) { if (frontStepAudio != null && frontFoot == 1) { frontStepAudio.PlayRandomClip(); } else if (backStepAudio != null && frontFoot == 0) { backStepAudio.PlayRandomClip(); } }
// Called each physics step to check if audio should be played and if so instruct the relevant random audio player to do so. void PlayAudio() { return; //todo float footfallCurve = m_Animator.GetFloat(m_HashFootFall); if (footfallCurve > 0.01f && !footstepPlayer.playing && footstepPlayer.canPlay) { footstepPlayer.playing = true; footstepPlayer.canPlay = false; footstepPlayer.PlayRandomClip(m_CurrentWalkingSurface, m_ForwardSpeed < 4 ? 0 : 1); } else if (footstepPlayer.playing) { footstepPlayer.playing = false; } else if (footfallCurve < 0.01f && !footstepPlayer.canPlay) { footstepPlayer.canPlay = true; } if (m_IsGrounded && !m_PreviouslyGrounded) { landingPlayer.PlayRandomClip(m_CurrentWalkingSurface, bankId: m_ForwardSpeed < 4 ? 0 : 1); emoteLandingPlayer.PlayRandomClip(); } if (!m_IsGrounded && m_PreviouslyGrounded && m_VerticalSpeed > 0f) { emoteJumpPlayer.PlayRandomClip(); } if (m_CurrentStateInfo.shortNameHash == m_HashHurt && m_PreviousCurrentStateInfo.shortNameHash != m_HashHurt) { hitAudio.PlayRandomClip(); } if (m_CurrentStateInfo.shortNameHash == m_HashEllenDeath && m_PreviousCurrentStateInfo.shortNameHash != m_HashEllenDeath) { emoteDeathPlayer.PlayRandomClip(); } if (m_CurrentStateInfo.shortNameHash == m_HashEllenCombo1 && m_PreviousCurrentStateInfo.shortNameHash != m_HashEllenCombo1 || m_CurrentStateInfo.shortNameHash == m_HashEllenCombo2 && m_PreviousCurrentStateInfo.shortNameHash != m_HashEllenCombo2 || m_CurrentStateInfo.shortNameHash == m_HashEllenCombo3 && m_PreviousCurrentStateInfo.shortNameHash != m_HashEllenCombo3 || m_CurrentStateInfo.shortNameHash == m_HashEllenCombo4 && m_PreviousCurrentStateInfo.shortNameHash != m_HashEllenCombo4) { emoteAttackPlayer.PlayRandomClip(); } }
virtual public void Die(Damageable.DamageMessage damageData) { m_Animator.SetTrigger(m_HashDeath); m_ForwardSpeed = 0f; m_VerticalSpeed = 0f; if (m_RagDoll != null) { m_RagDoll.Setup(); } //We unparent the hit source, as it would destroy it with the gameobject when it get replaced by the ragdol otherwise if (deathAudio != null) { deathAudio.transform.SetParent(null, true); deathAudio.PlayRandomClip(); GameObject.Destroy(deathAudio, deathAudio.clip == null ? 0.0f : deathAudio.clip.length + 0.5f); } }
public void BeginAttack(bool thowingAttack) { if (attackAudio != null) { attackAudio.PlayRandomClip(); } throwingHit = thowingAttack; m_InAttack = true; m_PreviousPos = new Vector3[attackPoints.Length]; for (int i = 0; i < attackPoints.Length; ++i) { Vector3 worldPos = attackPoints[i].attackRoot.position + attackPoints[i].attackRoot.TransformVector(attackPoints[i].offset); m_PreviousPos[i] = worldPos; #if UNITY_EDITOR attackPoints[i].previousPositions.Clear(); attackPoints[i].previousPositions.Add(m_PreviousPos[i]); #endif } }