gpt4 book ai didi

java - 我想做一个从我的 hp 值中减去 25 的方法,但是有一个问题

转载 作者:行者123 更新时间:2023-12-01 14:58:17 26 4
gpt4 key购买 nike

到目前为止我已经有了这个 if 逻辑

if (d.intersects(r1) && en.visible == true && en.isAlive == false)
{
hit = 25;
// System.out.println(enemy_count);
hitmang(hit);
}

if (d.intersects(r2) && en2.visible == true && en2.isAlive == false)
{
hit = 25;
hitmang(hit);
// System.out.println(enemy_count);
}

用这个方法

private void hitmang(int x) { 
p.user_hp = p.user_hp - x;
}

他们都是我的敌人

en = new Enemy(700, 150);
en2 = new Enemy (980, 150);

我想做到这样,当我击中敌人时,它只会从我身上减去 25 hp,但由于敌人的面积很大(113, 134),它会减去 25 直到我离开该范围,从而使我的 hp ~ -6000(显然是一个问题),有没有办法让它只减去一次。

最佳答案

我猜这是因为您的第一个代码片段位于游戏循环中,该循环每秒运行多次(通常为 30 次)。在每次执行(大约每 0.03 秒运行一次)中,您的形状与敌人相交(因为您没有移开)。

也就是说,你的 HP 每 0.03 秒就会减少 25,直到你远离敌人!

试试这个:

首先,在 Player 类中初始化一个 hitted 字段。

private boolean hitted = false;

然后,在你的游戏循环中。

if (d.intersects(r1) && en.visible == true && en.isAlive == false && !p.hitted)
{
hit = 25;
// System.out.println(enemy_count);
hitmang(hit);
p.hitted = true;
}

// Same goes to 2nd enemy ....

// if no longer intersects
if (!d.intersects(r1) && !d.intersects(r2)){
p.hitted = false;
}
<小时/>

或者您可能想根据评论实现冷却机制。

如果这是您想要做的,请初始化另一个字段

private int hitSince = 0;

然后,在你的游戏循环中。

if (d.intersects(r1) && en.visible == true && en.isAlive == false && hitSince <= 0)
{
hit = 25;
// System.out.println(enemy_count);
hitmang(hit);
hitSince = 30; // once hit, you won't be 'hit' and lose HP again in 30 frames
}

// Same goes to 2nd enemy ....

// decrease cooldown time every frame
hitSince--;

如果您这样做,您可能需要考虑使用计时器,因为此代码取决于您游戏的 FPS - 这在其他玩家的计算机中可能不稳定(因为他们的计算机是例如,速度缓慢或在后台运行防病毒软件。这通常被(游戏玩家)称为“滞后”)

顺便说一句,如果有很多敌人,您需要将它们存储在数组集合中,例如ArrayList

关于java - 我想做一个从我的 hp 值中减去 25 的方法,但是有一个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14064109/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com