示例#1
0
 private void Flip(Vector2 dir)
 {
     if (isWallSliding)
     {
         return;
     }
     if (!ps.facingLeft)
     {
         if (dir.x < 0)
         {
             anim.SetSpeed("playbackSpeed", -1f);
         }
         else
         {
             anim.SetSpeed("playbackSpeed", 1f);
         }
         sr.flipX = false;
     }
     else
     {
         if (dir.x > 0)
         {
             anim.SetSpeed("playbackSpeed", -1f);
         }
         else
         {
             anim.SetSpeed("playbackSpeed", 1f);
         }
         sr.flipX = true;
     }
 }
    //UPDATE POWER EFFECTS
    public override void deliverPowerEffects(PersonStatus status, AnimationScript animator, UnitNavigationController navigator)
    {
        if (timer == 0)
        {
            if (animator.powerEffect)
            {
                Object.Destroy(animator.powerEffect);
            }

            var renderers = status.gameObject.transform.GetComponentsInChildren <SkinnedMeshRenderer>();

            foreach (var renderer in renderers)
            {
                if (renderer.gameObject.name == "Character01")
                {
                    renderer.material.mainTexture = (Texture2D)Resources.Load("Character01Zombie", typeof(Texture2D));
                }
            }

            status.UnitStatus = PersonStatus.Status.Zombie;
            navigator.Stop();
            halfSpeed            = speed / 2;
            thirdSpeed           = speed / 3;
            animator.powerEffect = (GameObject)Object.Instantiate(owner.particleEffect, new Vector3(status.transform.position.x, status.transform.position.y + 0.9f, status.transform.position.z), Quaternion.identity);
            animator.powerEffect.transform.parent = animator.transform;
            status.Fear = owner.Fear;
        }

        timer += Time.deltaTime;

        if (timer >= (aliveTime * 0.25f) && timer <= (aliveTime * 0.75f) && !stop)
        {
            //Debug.Log(speed);
            speed = halfSpeed;
            animator.SetSpeed(animator.MiddleSpeed);
        }

        /*
         * if(timer >= (aliveTime * 0.5f) && timer <= (aliveTime * 0.75f))
         * {
         *      Debug.Log(speed);
         *      speed = speed / 2;
         * }
         */

        if (timer >= (aliveTime * 0.75f) && !stop)
        {
            //Debug.Log(speed);
            speed = thirdSpeed;
            animator.SetSpeed(0.5f);
            animator.SetSpeed(animator.WalkingSpeed);
        }

        if (stop)
        {
            animator.SetSpeed(0);
        }

        if (timer >= aliveTime)
        {
            status.UnitStatus = PersonStatus.Status.Dead;
            status.Fear       = 0;
            Object.Destroy(animator.powerEffect);
        }
    }