黒い棒のマスクを作ってそこにしか描けないように緑色の棒を重ねて、体力が減るたびに緑の棒を左に動かして
HPバーをつくるときの計算のことで質問です。
まず、HPバーは横40pixで、その40pixを100パーセントとした場合、ダメージを受けて減った体力の量が何%になるか…という事なんですけど、
まず、MAXHPから現在のHPを引くことで減った量を計算して、それを『MAXHPを40で割った数』で割る…ということをしてみたのですが、
これでは例えばMAXHPが100で一回で10ダメージを食らうとしたときに、8回目でHPバーが0に到達してしまいます。
他にもいろいろ試したのですが、どれもうまくいきませんでした。よければ計算方法をお願いします。
void DrawStates(){
//ステータス背景
DrawGraph(16,288,StatesBar,TRUE);
DrawGraph(128,288,StatesBar,TRUE);
DrawGraph(240,288,StatesBar,TRUE);
DrawGraph(352,288,StatesBar,TRUE);
//キャラ顔1
DrawGraph(128,288,HukeiFace,TRUE);
//キャラ1
DrawGraph(80,304,HPBack,TRUE); //HPの文字と枠
DrawGraph(80,320,MPBack,TRUE); //MPの文字と枠
DrawGraph(80,336,CPBack,TRUE); //CPの文字と枠
//ステータスマスク
CreateMaskScreen(); // マスクここから
DrawMask( 16, 288, StatesMask, DX_MASKTRANS_BLACK ); // マスク範囲のみを描画領域に
// 初期座標84
DrawGraph(84-((Player.HPMAX-Player.HP)/(Player.HPMAX/40)),314,HPBar,TRUE); //HPバー(HPが減ると左にずれていく)
DrawGraph(84,330,MPBar,TRUE); //MPバー
DrawGraph(84,346,CPBar,TRUE); //CPバー
DeleteMaskScreen(); // マスクここまで
//キャラ2
DrawGraph(80+112,304,HPBack,TRUE);
DrawGraph(80+112,320,MPBack,TRUE);
DrawGraph(80+112,336,CPBack,TRUE);
//ステータスマスク
CreateMaskScreen(); // マスクここから
DrawMask( 128, 288, StatesMask, DX_MASKTRANS_BLACK ); // マスク範囲のみを描画領域に
DrawGraph(84+112,314,HPBar,TRUE);
DrawGraph(84+112,330,MPBar,TRUE);
DrawGraph(84+112,346,CPBar,TRUE);
DeleteMaskScreen(); // マスクここまで
}