首页 > 解决方案 > 停止变量减去几秒钟

问题描述

我是 java 新手,我的代码有问题。我有两个相互移动的对象(“Gegener”是其中之一),每次它们接触时,变量“leben”都应该缩短 1。问题是变量会随着它们接触的每个像素而缩短。我希望变量缩短 1,然后是不可减去的时间段。我已经尝试过 Thread.sleep(); 但效果不佳。

这是到目前为止的代码:

public void damage()
{
    Actor Gegner = (Actor) getOneObjectAtOffset(0, (getImage().getHeight()/2)+3, Gegner.class);
    {
        if(Gegner != zero)
        {
            getWorld().removeObject(Gegner2);
        }
        if(isTouching(Gegner.class))
        {
            if(touching== false)
            {
                leben = leben-1;
                touching= true;
                getWorld().removeObject(Gegner);
            }
        }
        else
        {
            touching= false;
        }
    }

}

标签: java

解决方案


与其为此添加一个计时器(并混合显示/游戏更新——这会使诸如减慢速度、更快地运行模拟等变得更加困难),为什么不在检查时添加一个“计数器” touching

作为伪代码(因为我没有足够的上下文来更有用):

private int touchCooldown = 0;

public void damage() {

    if (touchCooldown > 0) {
        touchCooldown--;
        return;
    } 

    if (actor1.isTouching(actor2)) {
        actor1.life--;
        touchCooldown = 5;
    }
}

推荐阅读