Пример #1
0
 private void OnOffend(OffendInfo info)
 {
     if (!hasAuthority)
     {
         this.offendInfo = info;
     }
     if (this.offendInfo.offend)
     {
         stateMachine.SetState(PlayerStateMachine.PlayerState.Offend);
     }
     else
     {
         stateMachine.SetState(PlayerStateMachine.PlayerState.Idle);
     }
 }
Пример #2
0
 void FixedUpdate()
 {
     if (hideInfo.hide)
     {
         // 躲藏
         if (hasAuthority)
         {
             thisTransform.rotation = Quaternion.Lerp(thisTransform.rotation, targetRotation, Time.deltaTime * rotateSpeed);
         }
     }
     else if (outputCaught)
     {
         // 被抓
         stateMachine.SetState(PlayerStateMachine.PlayerState.Caught);
     }
     else if (inputCatch != 0)
     {
         // 抓人
         stateMachine.SetState(PlayerStateMachine.PlayerState.Catch);
     }
     else if (offendInfo.offend)
     {
         // 被冲撞
         stateMachine.SetState(PlayerStateMachine.PlayerState.Offend);
         if (hasAuthority)
         {
             float speed = offendInfo.speed - offendSpeed * Time.deltaTime;
             if (speed < 0f)
             {
                 OffendInfo newInfo = new OffendInfo();
                 newInfo.offend = false;
                 offendInfo     = newInfo;
                 return;
             }
             thisTransform.Rotate(Vector3.up * offendInfo.clockwise * Time.deltaTime * offendInfo.rotateSpeed);
             offendInfo.speed = speed;
             controller.Move(offendInfo.direction * offendInfo.speed * Time.deltaTime);
         }
     }
     else if (inputRun)
     {
         // 正在跑动
         float nowTime = Time.realtimeSinceStartup;
         if ((nowTime - runStartTime) / CONSUME_SPEED < leftRunEnergy)
         {
             stateMachine.SetState(PlayerStateMachine.PlayerState.Run);
             if (hasAuthority)
             {
                 thisTransform.rotation = Quaternion.Lerp(thisTransform.rotation, targetRotation, Time.deltaTime * runRotateSpeed);
                 controller.Move(inputDir * runSpeed * Time.deltaTime);
             }
         }
         else
         {
             stateMachine.SetState(PlayerStateMachine.PlayerState.Move);
             if (hasAuthority)
             {
                 thisTransform.rotation = Quaternion.Lerp(thisTransform.rotation, targetRotation, Time.deltaTime * rotateSpeed);
                 controller.Move(inputDir * moveSpeed * Time.deltaTime);
                 InjectRun(false);
             }
         }
     }
     else if (!inputStop)
     {
         // 正在移动
         stateMachine.SetState(PlayerStateMachine.PlayerState.Move);
         if (hasAuthority)
         {
             thisTransform.rotation = Quaternion.Lerp(thisTransform.rotation, targetRotation, Time.deltaTime * rotateSpeed);
             controller.Move(inputDir * moveSpeed * Time.deltaTime);
         }
     }
     else if (pushing)
     {
         // 推
         stateMachine.SetState(PlayerStateMachine.PlayerState.Push);
     }
     else if (defending)
     {
         // 防御
         stateMachine.SetState(PlayerStateMachine.PlayerState.Defend);
     }
     else
     {
         // 停止移动
         stateMachine.SetState(PlayerStateMachine.PlayerState.Idle);
     }
 }