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); } }
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); } }