作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在用 Java 从头开始编写一个简单的 2D 游戏(出于学习目的)
我想控制玩家射击的速度。那里完成的方法有效,但还可以改进。如果用户按下/按住鼠标左键,则会调用该方法。当用户按住按钮时它会起作用,但是当他/她释放鼠标按钮时,等待(超过射击时间)并尝试射击它可能会或可能不会起作用,因为在以下情况下roftC值不会更新球员没有投篮。然后我尝试将其放入我的 update()
方法中(每秒调用 60 次)。问题仍然存在。我真的不知道如何解决这个问题。这是我的代码:
/**
* Used to control the rate of fire
*/
private int roftC = 0;
/**
* Shoot a Projectile
*/
protected void shoot(int x, int y, double dir) {
Projectile p = new Bomb(x, y, dir);
if (roftC % p.getRateOfFire() == 0) {
level.addProjectile(p);
}
if (roftC > 6000) {
roftC = 0;
}
roftC++; // Whether it is here or down there doesn' t make a diffrence
}
/**
*
*/
@Override
public void update() {
// roftC++;
}
最佳答案
一个想法是在镜头之间引入最小的延迟。像这样的事情:
static final long MINIMUM_DELAY = 1000/30; // So we can have 30 shots per second
long lastShotTimestamp;
protected void shoot(int x, int y, double dir) {
long now = System.currentTimeMillis();
if (now - lastShotTimestamp > MINIMUM_DELAY) {
level.addProjectile(new Bomb(x, y, dir));
lastShotTimestamp = now;
}
}
这种方法实际上很接近物理学——枪在连续射击之间需要一些时间来重新装弹。
关于java - 控制射速 (Java GameDev),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18163573/
我是一名优秀的程序员,十分优秀!