java - 停止变量减去几秒钟
问题描述
我是 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;
}
}
}
解决方案
与其为此添加一个计时器(并混合显示/游戏更新——这会使诸如减慢速度、更快地运行模拟等变得更加困难),为什么不在检查时添加一个“计数器” touching
?
作为伪代码(因为我没有足够的上下文来更有用):
private int touchCooldown = 0;
public void damage() {
if (touchCooldown > 0) {
touchCooldown--;
return;
}
if (actor1.isTouching(actor2)) {
actor1.life--;
touchCooldown = 5;
}
}
推荐阅读
- css - 将标题向右对齐的引导对话框
- php - 将类变量设置为具有相同名称的关联数组键?
- javascript - 如何在这个 JS 中使用自定义属性而不是值?
- javascript - 如何让许多单词都触发相同的事情
- javascript - WKWebView 不适用于 JavaScript 类
- ruby-on-rails - Rails fields_for 复选框创建新记录
- android - 你能检测出你的安卓应用程序是否正在模拟器中运行吗?
- xml - SQL Server:BCP 导出 NULL 结果
- excel - microsoft excel COUNTIF/IF 和连接问题
- react-native - 反应原生条件渲染 swipeout listitem