我正在玩游戏,其中玩家/敌人有一个带有3个叠加的平衡杆。我试图做的是操纵第一个叠加层,使其按百分比完全越过栏。
示例:第一次叠加是敌人平衡的50%。然后进入另一个阶段'或者'州。然后,该叠加层消失,第二个叠加层被触发并开始减少。
条的宽度是200像素,所以我想要做的就是说,嘿,如果50%的敌人平衡消失,那么触发/动画第二个叠加。
我遇到的问题是剩余线。当我击中敌人说... 10平衡伤害200.它将给我适当的百分比和剩下适当的剩余。 但是一旦我达到50%,余数= 0!这就是该行或函数不再正常工作的地方,它打破了我想要做的设计模式。以下是控制台日志中的示例。
balanceCounter: function (character, boss){
var percentage = Math.floor((boss.balance/200) * 100)
var remain = 100 % percentage; // <--- This is not working properly
console.log(percentage);
console.log(remain);
if (character.virtue == "hero"){
if (percentage > 49){
$("#bossbalanceoverlay2").animate({
width: percentage * 2 - (remain * 2)
}, 200)
}
else
$("#bossbalanceoverlay1").animate({
width: percentage * 2 - (remain * 2)
}, 200);
}
**click attack button**
97 // <--- Percent
3 // <--- Remainder
**click attack button**
95 // <--- Percent
5 // <--- Remainder
**click attack button**
92 // <--- Percent
8 // <--- Remainder
(When i hit the 50% mark)
**click attack button**
50 // <--- Percent
0 // <--- Remainder **Why 0?**
**click attack button**
47 // <--- Percent
6 // <--- Remainder **Why 6 instead of 3?**
**click attack button**
45 // <--- Percent
10 // <--- Remainder **Why 10 instead of 5?**
答案 0 :(得分:2)
您可能希望这样做,而不是%
:
var remain = 100 - percentage;
你希望remain + percentage
总是加起来100,所以这是你需要的减法,而不是模运算。
通常情况下,%
(模数)在百分比为50时得到零,因为100是50的倍数,因此没有余数。
答案 1 :(得分:0)
你面临的问题是%返回余数。
100%45 =&gt;可被45整除两次,余数= 10.
100%50 =&gt;可被50整除两次,余数= 0。
你想要的是remain = 100 - percentage
答案 2 :(得分:-2)
对于初学者,我会添加缺少的分号。
其次看起来你的else括号缺少大括号{},这可能导致两个块被命中,具体取决于代码的格式化。
第三,我会阅读%运算符,你可能会过度思考它;)