2014-01-23 12 views
1

그래서 나는 내 개인적인 즐거움을위한 전투 시스템을 만들고 있으며, 그 치유 부분을 다루려고 노력 중입니다. 치유 아이템을 사용할 때 최대 치유량이 치유 효과의 값과 무관하게 현재의 최대 체력을 초과하면 최대 체력이 증가합니다.최대 값 클램프

나는 이것을 찾아 보았고 일부 사람들은 채도 계산을 제안했지만 구글에서 그 과정을 설명하는 것을 찾을 수 없었다. 그런 다음 Stack에서 동일한 문제를 설명하고 답변을 얻은 다른 항목을 찾았습니다. 그러나 시도했을 때 작동하지 않았습니다. 긴 이야기가 짧다.

다음은 현재 내가 작업하고있는 코드 블록입니다.

public void useHealItem2(CharStats hero, Enemy enemy, Battle battle){ 
    Math.min(hero.hp += 500, hero.hp); 
    battle.herodmg = enemy.att - hero.def; 
    hero.hp -= battle.herodmg; 
} 

그래서 최대 값을 고정 된 숫자가 아닌 가변적으로 설정하려고합니다. 영웅의 HP가 증가하면 자동으로 확장됩니다. 이것이 처음에는 hp를 설정하기 때문에 이것이 문제가 있다고 생각합니다. 따라서 최대량은 이미 500에 있습니다. 그러나 그것은 내가 생각하고있는 것이고, 나는 정말로 모른다.

+0

치료 항목은 무엇입니까? 게임에 "현재 HP"대 "최대 HP"의 개념이 있습니까? – dnault

+0

'clipLevel * tanh (inputValue/clipLevel)'를 사용하십시오. 그것은 꽤 일반적인 오디오 클리핑 알고리즘입니다. –

+0

@dnault에 Stendika의 제안을 사용했습니다. 하지만 고맙습니다. – Kristaphonie

답변

3

나는 과 maxHealth이 정확히 들리는 소리 인 것을 hero.hp = Math.min(hero.currentHealth+500, hero.maxHealth)이라고 말합니다. @Stendika으로

+0

붐은 다이나마이트를갑니다. 그것은 트릭을했다. 감사. 그것은 내가 좋아하는 확장 성을 유지해야한다. – Kristaphonie

1

이 솔루션이 될 것 Math.min(hero.hp + 500, hero.maxHealth)를 사용하여 대답했다, 그 다음 모두의 최소 소요되며, 요청에 따라 hero.hp + 500 > hero.maxHealth 경우는 hero.maxHealth 소요됩니다. 또한 당신이 이해하는 것이 매우 중요하지만

을 (우리는 당신이 당신의 제안 방법을 계산하려는 경우 필수입니다 영웅의 최대 건강을 저장하는 변수 hero.maxHealth를 만든)
지금 무슨 일이 일어나고 있는지, 설명하기 : 당신은 그러므로 아무것도하지 않는 것처럼, 당신은 어떤 변수에 위의 진술의 반환 값을 지정

  • Math.min(hero.hp += 500, hero.hp)을 사용하는

    • .
    • hero.hp += 500이 여전히 평가되고 실행되므로 추가는 500에서 hero.hp이되므로 hero.hp이 변경되었습니다.
    • 이로 인해 계산을 '무시'하여 마치 500hero.hp에 추가 한 것처럼 동작합니다.
  • +0

    설명해 주셔서 감사합니다. 나는 그것이 그와 같은 것이라고 생각했지만 아직도 많이 배우기 때문에 실수를 이해하는 데 도움이됩니다. – Kristaphonie