Exemplo n.º 1
0
	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]);
        }
    }
Exemplo n.º 3
0
	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
	}