2017-12-29 41 views
-2

공격이 변경 될 때마다 사용자가 동일한 하단을 여러 번 누르면 3 단위 공격을하려고합니다. 나는 문 IF 최초의 종료에 실패 괜찮아요이 코드를 시도했지만 멀티 어택 공격

if (Input.GetKeyDown(KeyCode.Q) && attTraking == 0) 
{ 
    anim.SetTrigger(attackOneToHash); 
    attTraking = 1; 
} 

else if (Input.GetKeyDown(KeyCode.Q) && attTraking == 1) 
{ 
    anim.SetTrigger(attackTwoToHash); 
    attTraking = 2; 

} 

else if (Input.GetKeyDown(KeyCode.Q) && attTraking == 2) 
{ 
    anim.SetTrigger(attackThreeToHash); 
    attTraking = 0; 
} 

그럼 난 다른 추가하고 0에 코드를 attTraking 설정 공격

의 수를 추적하는 데 실패했습니다.

+0

클래스가 실패했습니다. – AMA91

답변

1

전체 수업을 표시하지 않았기 때문에 알기가 어렵습니다.

그럼에도 불구하고, 내 생각 엔 당신이 함수에 지역

  • 당신은 0으로 재설정 (이 클래스 레벨에서 선언되어야하는) 선언

    • 때문에 attTraking 때마다 0으로 재설정한다는 것입니다 어떻게 든이 메서드는 두 번째/세 번째 호출 할 시간이 있습니다.

    당신 같은 다른 문을 추가하는 경우이 하나

    else 
    { 
        attTraking = 0; 
    } 
    
    다음 attTracking 키 'Q'가 완전히 논리를 무효화을 (를 누르면되지 않은 갱신에서 0 으로 재설정됩니다

  • 1

    Pac0의 대답이 시나리오에 대한 올바른 "키를 여러 번 눌러"하지만 난 그냥 삐 소리가 이것을 할 수있는 더 좋은 방법이 말하고 싶었다의 ..

    int maxCount = 2; 
    int attCount = 0; 
    public int[] AttackTriggers; //Add the trigger ID's to the array via the editor. 
    public float attackResetTime = 1.0f; //Will take one second to reset counter. 
    
    if(Input.GetKeyDown(KeyCode.Q)) 
    { 
        anim.SetTrigger(AttackTriggers[attCount]); 
        attCount++; 
        if(attCount > maxCount) 
        { 
        attCount = 0; 
        } 
    } 
    

    하지만 사용자가 지정된 시간 내에 Q를 누르지 않으면 attCount를 다시 0으로 재설정해야하는지 확인해야합니다. 이것은 코 루틴으로 달성 할 수 있습니다.

    public IEnumerator ResetAttCount() 
    { 
        yield return new WaitForSeconds(attackResetTime); 
        attCount = 0; 
    } 
    

    이제, 우리는 시간을 기준으로 카운트를 재설정 할 수 있습니다,하지만 우리는 여전히 우리가 시작되었는지 확인하고 오른쪽 장소에서 코 루틴을 중지, 그래서 if 문 원래 약간 수정할 수해야합니다

    if(Input.GetKeyDown(KeyCode.Q)) 
    { 
        StopCoroutine(ResetAttCount()); 
        anim.SetTrigger(AttackTriggers[attCount]); 
        attCount++; 
        if(attCount > maxCount) 
        { 
        attCount = 0; 
        } 
    } 
    

    그리고 다음의 키 업 이벤트에 대해 한 번 더 문을 추가 할 수 없습니다 :

    if(Input.GetKeyUp(KeyCode.Q)) 
    { 
        StartCoroutine(ResetAttCount()); 
    } 
    

    을 아니 이제 우리는 성공적으로 키를 놓을 때 타이머를 시작하고 중지하여 공격 횟수의 리셋 타이밍 키가 1 초 이내에 다시 한번 눌려지면

    +1

    나는 OP의 대답이 왜 틀렸는지를 설명하려고했습니다. 답안은 실제 해결책을 제공합니다. – Pac0