← Каталог
Java — Java Survivors — Этап 6 — опыт, магнит, уровень
Фрагмент из «Java — Java Survivors»: Этап 6 — опыт, магнит, уровень.
private void updateXpOrbs(double dt) {
Iterator<XpOrb> it = xpOrbs.iterator();
while (it.hasNext()) {
XpOrb o = it.next();
double dx = player.x - o.x;
double dy = player.y - o.y;
double d = Math.hypot(dx, dy);
if (d < player.magnetRadius && d > 1) {
double pull = 320 * dt;
o.x += (dx / d) * pull;
o.y += (dy / d) * pull;
}
if (d < player.radius + 8) {
addXp(o.value);
it.remove();
}
}
}
private void addXp(int amount) {
player.xp += amount;
while (player.xp >= player.xpToNext) {
player.xp -= player.xpToNext;
player.level++;
player.xpToNext = (int) (player.xpToNext * 1.25) + 4;
pendingLevelUps++;
}
} private void updateXpOrbs(double dt) {
Iterator<XpOrb> it = xpOrbs.iterator();
while (it.hasNext()) {
XpOrb o = it.next();
double dx = player.x - o.x;
double dy = player.y - o.y;
double d = Math.hypot(dx, dy);
if (d < player.magnetRadius && d > 1) {
double pull = 320 * dt;
o.x += (dx / d) * pull;
o.y += (dy / d) * pull;
}
if (d < player.radius + 8) {
addXp(o.value);
it.remove();
}
}
}
private void addXp(int amount) {
player.xp += amount;
while (player.xp >= player.xpToNext) {
player.xp -= player.xpToNext;
player.level++;
player.xpToNext = (int) (player.xpToNext * 1.25) + 4;
pendingLevelUps++;
}
}