Пример #1
0
    void onEvent(string evt, object obj)
    {
        Debug.Log("wanghy -- HeroAttackState evt = " + evt);
        resetAnimValue();
        switch (evt)
        {
        case Events.EVENT_SKILL0:
            AnimCtl.setAnimValue("attack0", true);
            break;

        case Events.EVENT_SKILL1:
            AnimCtl.setAnimValue("attack1", true);
            break;

        case Events.EVENT_SKILL2:
            AnimCtl.setAnimValue("attack2", true);
            break;

        case Events.EVENT_SKILL3:
            AnimCtl.setAnimValue("attack3", true);
            break;

        case Events.EVENT_SKILL4:
            AnimCtl.setAnimValue("attack4", true);
            break;
        }
    }
Пример #2
0
 public override void onUpdate()
 {
     if (waitRebirth)//第三步等待重生
     {
         Debug.Log("wanghy -- dead state update 1");
         //移动到出生点
     }
     else if (fadeout)//第二步淡出
     {
         Debug.Log("wanghy -- dead state update 2");
         Color currColor   = renderer.material.color;
         Color targetColor = new Color(currColor.r, currColor.g, currColor.b, 0);
         Color setColor    = Color.Lerp(currColor, targetColor, Time.deltaTime);
         renderer.material.color = setColor;
         if (setColor.a <= 0.05)
         {
             waitRebirth = true;
         }
     }
     else//第一步 dead 动画
     {
         //检查dead动画
         AnimatorStateInfo info = AnimCtl.Anim.GetCurrentAnimatorStateInfo(0);
         Debug.Log("wanghy -- dead state update 3 normalizedTime=" + info.normalizedTime + ", length=" + info.length);
         if (info.normalizedTime >= info.length)//动画结束
         {
             AnimCtl.setAnimValue("isDead", false);
             fadeout = true;
         }
     }
 }
Пример #3
0
    IEnumerator updateJumpAnim()
    {
        float currJumpValue      = 0.11f;                                 //跳跃起始时间
        float jumpValueTotal     = 1.79f;                                 //跳跃时间
        float jumpHeight         = 4;                                     //跳跃高度
        float startUpSpeed       = 2 * jumpHeight / (jumpValueTotal / 2); // v = at/2 up方向起始速度
        float upA                = -startUpSpeed / (jumpValueTotal / 2);  //跳跃up方向加速度
        float currUpSpeed        = startUpSpeed;                          //当前跳跃up方向速度
        float costTime           = 1.0f;                                  //整个跳跃动画花费时间
        float jumpValueGrowSpeed = jumpValueTotal / costTime;             //每次 jumpValue 增长多少

        double currTime = Time.time;
        int    times    = 0;

        do
        {
            times++;
            currTime += Time.deltaTime;
            float offJumpValue = jumpValueGrowSpeed * Time.deltaTime;
            currJumpValue = currJumpValue + offJumpValue;
            AnimCtl.setAnimValue("newJump", currJumpValue);
            //跳跃时前进
            float forwardDis = offJumpValue * AnimCtl.NavAgent.speed;

            //跳跃时上升
            float startUpSpeedInner = currUpSpeed;
            currUpSpeed = startUpSpeedInner + upA * offJumpValue; // vt = v0 + at
            float upDis = (Mathf.Pow(currUpSpeed, 2) - Mathf.Pow(startUpSpeedInner, 2)) / (2 * upA);

            AnimCtl.transform.position += AnimCtl.transform.forward * forwardDis + AnimCtl.transform.up * upDis;
            yield return(0);
        } while (currJumpValue <= 1.9f);
        needSwitchAnim = true;
    }
Пример #4
0
 void resetAnimValue()
 {
     AnimCtl.setAnimValue("attack0", false);
     AnimCtl.setAnimValue("attack1", false);
     AnimCtl.setAnimValue("attack2", false);
     AnimCtl.setAnimValue("attack3", false);
     AnimCtl.setAnimValue("attack4", false);
 }
Пример #5
0
 public override void onExit()
 {
     rebirth      = false;
     fadeout      = false;
     waitRebirth  = false;
     rebirthCount = 0;
     rebirth      = false;
     AnimCtl.setAnimValue("isDead", false);
 }
Пример #6
0
 public override void onEnter()
 {
     AnimCtl.setAnimValue("attackState", true);
     mapEvent(Events.EVENT_SKILL0, onEvent);
     mapEvent(Events.EVENT_SKILL1, onEvent);
     mapEvent(Events.EVENT_SKILL2, onEvent);
     mapEvent(Events.EVENT_SKILL3, onEvent);
     mapEvent(Events.EVENT_SKILL4, onEvent);
 }
Пример #7
0
    public override void onUpdate()
    {
        if (AnimCtl.ChaseObject != null)
        {
            //看着敌人
            GameObject.transform.LookAt(AnimCtl.ChaseObject.transform);
        }
        AnimCtl.checkEnemy();

        checkHit();
    }
Пример #8
0
 void resetTarget()
 {
     if (hasExtraData("runtotarget"))
     {
         Vector3 runToTarget = (Vector3)getExtraData("runtotarget");
         if (!runToTarget.Equals(mTarget))
         {
             mTarget = runToTarget;
             AnimCtl.setNewDestination(mTarget);
         }
     }
 }
Пример #9
0
 public override string switchToNextState()
 {
     if (AnimCtl.IsJumping)
     {
         return("HeroJumpState");//转到 jump 状态
     }
     else if (AnimCtl.IsRunning)
     {
         return("HeroRunState");//转到 run 状态
     }
     else if (AnimCtl.IsChasing)
     {
         return("HeroChaseState");               //转到 chase 状态
     }
     else if (AnimCtl.isArrivedTargetForChase()) //如果在攻击范围内
     {
         return("HeroAttackState");
     }
     return(base.switchToNextState());
 }
Пример #10
0
 public override string switchToNextState()
 {
     if (AnimCtl.isArrivedTargetForChase())//追上了,转攻击
     {
         return("HeroAttackState");
     }
     else if (AnimCtl.isOutofRangeForChase())//超范围,停止追逐,返回原地
     {
         return("HeroIdleState");
     }
     else if (AnimCtl.IsRunning)
     {
         return("HeroRunState");
     }
     else if (AnimCtl.IsJumping)
     {
         return("HeroJumpState");
     }
     return(base.switchToNextState());
 }
Пример #11
0
 public override string switchToNextState()
 {
     if (AnimCtl.IsJumping)
     {
         return("HeroJumpState");
     }
     else if (AnimCtl.isArrivedTarget())
     {
         AnimCtl.checkEnemy();
         if (AnimCtl.IsChasing)       //TODO: 可能遇到敌人了。
         {
             return("HeroIdleState"); //避免切换状态太快 动画奇怪
         }
         else if (AnimCtl.isArrivedTargetForChase())
         {
             return("HeroAttackState");
         }
         else
         {
             return("HeroIdleState");
         }
     }
     return(base.switchToNextState());
 }
Пример #12
0
 public override void onUpdate()
 {
     AnimCtl.checkEnemy();
 }
Пример #13
0
 public override void onEnter()
 {
     AnimCtl.StartCoroutine(updateJumpAnim());
 }
Пример #14
0
 public override void onExit()
 {
     needSwitchAnim = false;
     AnimCtl.stopJump();
 }
Пример #15
0
 public override void onUpdate()
 {
     AnimCtl.updateChase();
 }
Пример #16
0
 public override void onExit()
 {
     AnimCtl.stopChase();
 }
Пример #17
0
 public override void onExit()
 {
     AnimCtl.stopIdle();
 }
Пример #18
0
 public override void onExit()
 {
     AnimCtl.stopRun();
 }
Пример #19
0
 public override void onExit()
 {
     AnimCtl.setAnimValue("attackState", false);
     resetAnimValue();
 }
Пример #20
0
 public override void onEnter()
 {
     AnimCtl.startIdle();
 }
Пример #21
0
 public override void onEnter()
 {
     Debug.Log("wanghy -- dead state enter");
     renderer = GameObject.transform.FindChild("model").GetComponent <Renderer>();
     AnimCtl.setAnimValue("isDead", true);
 }