override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { FootPlacementData lF1 = animator.GetComponents<FootPlacementData>()[0]; FootPlacementData lF2 = animator.GetComponents<FootPlacementData>()[1]; //setting up first foot transition time and extra ray dist check if (lF1 != null) { if(stateInfo.normalizedTime > 0.25f) { lF1.mExtraRayDistanceCheck = mIdleRayCast; } else { lF1.mExtraRayDistanceCheck = 0; } } //setting up second foot transition time and extra ray dist check if (lF2 != null) { if(stateInfo.normalizedTime > 0.25f) { lF2.mExtraRayDistanceCheck = mIdleRayCast; } else { lF2.mExtraRayDistanceCheck = 0; } } }
public IEnumerator EnemyAttackAnimation() { Animator anim = enemies[n + 1].GetComponentInChildren <Animator>(); anim.SetTrigger("Attack"); anim.Update(0f); float minDamageableSec = 0; float maxDamageableSec = 0; float hitTimer = 0; // The window at which an enemy is damageable // timing varies by enemy type if (level[n + 1] == 1) { minDamageableSec = 0.4f; maxDamageableSec = 0.7f; hitTimer = maxDamageableSec; } else if (level[n + 1] == 2) { minDamageableSec = 0.2333f; maxDamageableSec = 0.6f; hitTimer = maxDamageableSec; } float currAnimTime; bool hit = false; while (level[n + 1] != 0 && anim.GetCurrentAnimatorStateInfo(0).IsTag("Attack")) { currAnimTime = anim.GetCurrentAnimatorStateInfo(0).normalizedTime; if (maxDamageableSec >= currAnimTime && currAnimTime >= minDamageableSec) { damageable = true; //Debug.Log(anim.GetCurrentAnimatorStateInfo(0).normalizedTime); } else { damageable = false; } if (!hit && currAnimTime >= hitTimer) { hit = true; player.PlayGettingHit(); } yield return(null); } damageable = false; enemyAttack = false; //Debug.Log("Ended"); if (!anim.GetComponents <AudioSource>()[1].isPlaying) { Destroy(enemies[n + 1]); } }
public override void OnStateUpdate(Animator animator, AnimatorStateInfo animatorStateInfo, int layerIndex) { float lCurrentSpeedFactor = animator.GetFloat("speed"); float lTime = animatorStateInfo.normalizedTime - Mathf.Floor(animatorStateInfo.normalizedTime); float lBlendedTime = 0.5f - 0.25f * lCurrentSpeedFactor; FootPlacementData[] lFeet = animator.GetComponents<FootPlacementData>(); FootPlacementData lFoot; //First foot setup start if(!lFeet[0].IsLeftFoot) { lFoot = lFeet[0]; } else { lFoot = lFeet[1]; } //Setting up transition time lFoot.mTransitionTime = 0.15f - (0.1f * lCurrentSpeedFactor); //Setting up raycast extra ray dist if(lTime < lBlendedTime) { lFoot.mExtraRayDistanceCheck = 0.7f; } else { lFoot.mExtraRayDistanceCheck = -0.2f; } //First foot setup end //Second foot setup start if(lFeet[0].IsLeftFoot) { lFoot = lFeet[0]; } else { lFoot = lFeet[1]; } //Setting up transition time lFoot.mTransitionTime = 0.15f - (0.1f * lCurrentSpeedFactor); //Setting up raycast extra ray dist if(lTime > 0.5 && lTime < 0.5f + lBlendedTime) { lFoot.mExtraRayDistanceCheck = 0.7f; } else { lFoot.mExtraRayDistanceCheck = -0.2f; } //Second foot setup end }