//공격 애니메이션 재생이 끝나면 호출되는 애니메이션 이벤트 함수 void OnAttackAnimFinished() { if (NextAttack) { NextAttack = false; switch (AttackState) { case FighterAttackState.Attack1: AttackState = FighterAttackState.Attack2; break; case FighterAttackState.Attack2: AttackState = FighterAttackState.Attack3; break; case FighterAttackState.Attack3: AttackState = FighterAttackState.Attack4; break; case FighterAttackState.Attack4: AttackState = FighterAttackState.Attack1; break; } } else { CannotMove = false; myState = PlayerState.Idle; AttackState = FighterAttackState.Attack1; } }
/// <summary> /// 공격 애니메이션 재생이 끝나면 호출되는 애니메이션 이벤트 함수 /// </summary> void OnAttackAnimFinished() { if (nextAttack == true) { nextAttack = false; switch (attackState) { case FighterAttackState.Attack1: attackState = FighterAttackState.Attack2; break; case FighterAttackState.Attack2: attackState = FighterAttackState.Attack3; break; case FighterAttackState.Attack3: attackState = FighterAttackState.Attack4; break; case FighterAttackState.Attack4: attackState = FighterAttackState.Attack1; break; } } else { cannotMove = false; myState = FighterState.Idle; attackState = FighterAttackState.Attack1; } }
/// <summary> /// 마우스 왼쪽 버튼으로 공격을 합니다 /// </summary> void InputControl() { // 0 마우스 왼쪽, 1 오른쪽, 2 휠 if (Input.GetMouseButtonDown(0) == true) { // 내가 공격중이 아니라면 공격 시작 if (myState != FighterState.Attack) { myState = FighterState.Attack; attackState = FighterAttackState.Attack1; } else { // 공격 중이라면 애니메이션이 일정 이상 재생이 되었다면 다음 공격 활성화 switch (attackState) { case FighterAttackState.Attack1: if (myAnimation[attack1AnimClip.name].normalizedTime > 0.1f) { nextAttack = true; } break; case FighterAttackState.Attack2: if (myAnimation[attack2AnimClip.name].normalizedTime > 0.1f) { nextAttack = true; } break; case FighterAttackState.Attack3: if (myAnimation[attack3AnimClip.name].normalizedTime > 0.1f) { nextAttack = true; } break; case FighterAttackState.Attack4: if (myAnimation[attack4AnimClip.name].normalizedTime > 0.1f) { nextAttack = true; } break; } } } if (Input.GetMouseButtonDown(1) == true) { if (myState == FighterState.Attack) { attackState = FighterAttackState.Attack1; nextAttack = false; } myState = FighterState.Skill; } }
private void InputControl() { // 0은 왼쪽 버튼, 1은 오른쪽버튼, 2는 휠버튼 if (Input.GetMouseButtonDown(0) == true) { if (_state != FighterState.Attack) { _state = FighterState.Attack; attackState = FighterAttackState.Attack1; } else { switch (attackState) { case FighterAttackState.Attack1: // 10%이상 진행되었다면 if (_animation[attack1AnimClip.name].normalizedTime > 0.1f) { nextAttack = true; } break; case FighterAttackState.Attack2: if (_animation[attack2AnimClip.name].normalizedTime > 0.1f) { nextAttack = true; } break; case FighterAttackState.Attack3: if (_animation[attack3AnimClip.name].normalizedTime > 0.1f) { nextAttack = true; } break; case FighterAttackState.Attack4: if (_animation[attack4AnimClip.name].normalizedTime > 0.1f) { nextAttack = true; } break; default: throw new ArgumentOutOfRangeException(); } } } }
/// <summary> /// 스킬을 사용하는 함수 /// </summary> public void OnSkill() { if (skillcool || User.Instance.mpcur < 20)//쿨타임 중이거나 마나가 모자르다면 { skillText.gameObject.SetActive(true); Invoke("TextDisable", 1.5f); return; } if (myState == PlayerState.Attack) { AttackState = FighterAttackState.Attack1; NextAttack = false; } myState = PlayerState.Skill; MpUse(); StartCoroutine(SkillCoolTime(5f)); }
/// <summary> /// 공격을 합니다. /// </summary> public void Attack() { //내가 공격중이 아니라면 공격을 시작하게 되고 if (myState != PlayerState.Attack) { myState = PlayerState.Attack; AttackState = FighterAttackState.Attack1; } else { //공격 중이라면 애니메이션이 일정 이상 재생이 되었다면 다음 공격을 활성화 switch (AttackState) { case FighterAttackState.Attack1: if (myAnimation[Attack1AnimClip.name].normalizedTime > 0.1f) { NextAttack = true; } break; case FighterAttackState.Attack2: if (myAnimation[Attack2AnimClip.name].normalizedTime > 0.1f) { NextAttack = true; } break; case FighterAttackState.Attack3: if (myAnimation[Attack3AnimClip.name].normalizedTime > 0.1f) { NextAttack = true; } break; case FighterAttackState.Attack4: if (myAnimation[Attack4AnimClip.name].normalizedTime > 0.1f) { NextAttack = true; } break; } } }
public void OnDashSkill() { if (CannotMove)//이동불가일때는 함수 리턴 { return; } if (dashcool || User.Instance.mpcur < 20)//쿨타임 중이거나 마나가 모자르다면 { skillText.gameObject.SetActive(true); Invoke("TextDisable", 1.5f); return; } if (myState == PlayerState.Attack) { AttackState = FighterAttackState.Attack1; NextAttack = false; } rbody.constraints = RigidbodyConstraints.FreezePositionY | RigidbodyConstraints.FreezeRotation; DashMoving = true; myState = PlayerState.DashSkill; MpUse(); StartCoroutine(DashCoolTime(5f)); }