gpt4 book ai didi

java - 在 LinkedList 中检测与 Sprite 的碰撞

转载 作者:行者123 更新时间:2023-11-29 05:54:29 25 4
gpt4 key购买 nike

大家好,这是我的难题。

我有一个正在使用的动画 Sprite ,并使用动画监听器来了解动画何时完成或在最后一帧。

当动画处于最后一帧时,我想移除它与之碰撞的任何对象。

所以这是我现在遇到的问题:

我正在使用 TimeHandler 来检测碰撞,但问题是我将随机数量的可移动对象添加到游戏中,并且我将它们添加到 LinkedList 中,因为它们是在加载期间添加到场景中的。

然后在我的 TimeHandler 中,我尝试像这样检测碰撞;

   mEngine.registerUpdateHandler(new TimerHandler(.005f, true,
new ITimerCallback() {
@Override
public void onTimePassed(final TimerHandler pTimerHandler) {

if (frames == 1) {

if (woodSprites.hasNext()) {

Sprite sprite = woodSprites.next();
if (bombSprite.collidesWith(sprite)) {
Log.e("Frame", "Collision");
removeFace(sprite);

}
}
}

}

}));

这种方法的问题在于,如果炸弹 Sprite 与迭代器中不在下一个的可移动 Sprite 发生碰撞,那么它不会检测到碰撞并且什么也不会发生。我需要能够在发生碰撞时移除该特定的可移动 Sprite

有没有人知道或有任何建议让这个工作?

最佳答案

我没有看到使用 TimerHandler 的理由,它可能会执行得非常糟糕,因为它可能会一直丢失正确的帧。你这样做是为了提高性能吗?试试这个代码:

mEngine.registerUpdateHandler(new IUpdateHandler() {

@Override
public void reset() {}

@Override
public void onUpdate(float pSecondsElapsed) {
if (frames == 1) {
for (Sprite s : woodSprites) {
if (bombSprite.collidesWith(s)) {
removeFace(s);
}
}
}
});

我认为性能影响应该可以忽略不计。

关于java - 在 LinkedList 中检测与 Sprite 的碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12699550/

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