public void PlayMovementAction(FanaticBattleType actionType) { float speed = 0; switch (actionType) { case FanaticBattleType.Walk_forward: SetMoveType(MoveType.WalkForward); LockRotation = false; speed = WalkSpeed; break; case FanaticBattleType.Walk_left: SetMoveType(MoveType.Left); m_desiredMoveDirection = transform.right * -1; if (!TCP_SendMovement(WalkSpeed)) { CC.Move(m_desiredMoveDirection * WalkSpeed * Time.deltaTime); } m_isMovementAction = true; return; case FanaticBattleType.Walk_right: SetMoveType(MoveType.Right); m_desiredMoveDirection = transform.right; if (!TCP_SendMovement(WalkSpeed)) { CC.Move(m_desiredMoveDirection * WalkSpeed * Time.deltaTime); } m_isMovementAction = true; return; case FanaticBattleType.Run: SetMoveType(MoveType.RunForward); LockRotation = false; speed = RunSpeed; break; case FanaticBattleType.FastRun: SetMoveType(MoveType.FastRun); LockRotation = false; speed = RunSpeed; break; default: m_isMovementAction = false; return; } SetMoveDirection(speed); m_isMovementAction = true; }
// 서버와 연결 체크 후, 서버에 애니메이션 보내기 // 서버연결 안되있는 경우엔 공격 애니메이션 실행 void Check_PlayBattleAction(FanaticBattleType actionType) { // 이동 애니메이션 실행이면, 공격 애니메이션은 실행 안하도록 종료 if (m_isMovementAction) { return; } // 서버 연결되있으면, 애니메이션 보내고 밑에 실행문은 실행안함. if (TCP_SendAnimation((int)actionType)) { return; } // 공격 애니메이션 실행 PlayBattleAction(actionType); }
// actionType에 따른 공격 애니메이션 실행 void PlayBattleAction(FanaticBattleType actionType) { switch (actionType) { case FanaticBattleType.Evade: m_isEvade = true; isMoving = false; TCP_setAnimation = false; SetMoveType(MoveType.Stay); m_desiredSpeed = 0; HitBox.GetComponent <BoxCollider>().enabled = false; m_Animator.SetInteger("Evade", 0); break; case FanaticBattleType.Attack1: m_isAttack = true; isMoving = false; TCP_setAnimation = false; SetMoveType(MoveType.Stay); m_desiredSpeed = 0; currentDamageValue = 25f; currentAttackType = 0; CreateRandomActionTime(5f, 6f); m_Animator.SetInteger("BattleSTATE", (int)AnimBattleSTATE.Attack1); break; case FanaticBattleType.Attack2: m_isAttack = true; isMoving = false; TCP_setAnimation = false; SetMoveType(MoveType.Stay); m_desiredSpeed = 0; currentDamageValue = 20f; currentAttackType = 0; CreateRandomActionTime(5f, 6f); m_Animator.SetInteger("BattleSTATE", (int)AnimBattleSTATE.Attack2); break; case FanaticBattleType.Attack3: m_isAttack = true; isMoving = false; TCP_setAnimation = false; SetMoveType(MoveType.Stay); m_desiredSpeed = 0; currentDamageValue = 15f; currentAttackType = 0; CreateRandomActionTime(5f, 6f); m_Animator.SetInteger("BattleSTATE", (int)AnimBattleSTATE.Attack3); break; case FanaticBattleType.Max: break; } //print("공격 실행: " + actionType); m_RecvActionType = FanaticBattleType.Max; }
// 받은 애니메이션 m_THydraActionType에 지정 public void TCP_RecvAnimation(int anim) { m_RecvActionType = (FanaticBattleType)anim; print("공격 애니메이션 받음: " + m_RecvActionType); }
public MoveAction(FanaticBattleType _Action, float _Time) { Action = _Action; Time = _Time; }