当前位置: 首页 > 知识库问答 >
问题:

精灵之间的LibGdx碰撞检测?

谢承颜
2023-03-14

使用< code >加速计,我的精灵图像会左右移动,如果我触摸屏幕,精灵会移动到Y轴。我想在不同的精灵之间进行碰撞检测,这样如果精灵穿过一个物体,它就会停下来藏在那个物体里。我已经看了这个https://www.youtube.com/watch?v=T1aN-vTqLc的教程,但什么也没发生。进行碰撞检测的正确方法是什么?我不知道我的编码有什么问题。任何建议或更好的教程谢谢和进步

这是我的编码

private Rectangle rectangleCat;
private Rectangle rectangleShoes;
private float yPosition = -40;

鬼怪;雪碧

    cat = new Texture(Gdx.files.internal("cat.png"));
    catsprite = new Sprite(cat);
    catX=300;
    catY=0;

    sprite_shoes = new Sprite(new Texture("equip/Shoes.png"));
    sprite_shoes.setPosition(260,580);

   rectangleShoes=new Rectangle(sprite_shoes.getX(),sprite_shoes.getY(),sprite_shoes.getWidth(),sprite_shoes.getHeight());
   rectangleCat = new Rectangle(catsprite.getX(),catsprite.getY(),catsprite.getWidth(),catsprite.getHeight());

渲染方法

    boolean isOverlaping = rectangleCat.overlaps(rectangleShoes);
    if(!isOverlaping) {
        System.out.println("not overlap");
        yPosition = yPosition + (20 * delta);

    }

我的雪碧图像和Object没有重叠

完整的源代码 http://pastebin.com/Dxfx9f65

共有1个答案

周奇
2023-03-14

首先,您的精灵不是锐利的矩形,它看起来像多边形,所以您需要检测两个多边形之间的碰撞。

仍然,如果你想检测矩形之间的冲突,那么在delut()方法中获取你的精灵的边界矩形。

在渲染方法中

rectangleShoes=sprite_shoes.getBoundingRectangle();
rectangleCat=catsprite.getBoundingRectangle();

boolean isOverlaping = rectangleCat.overlaps(rectangleShoes);
if(!isOverlaping) {
    System.out.println("not overlap");
    yPosition = yPosition + (20 * delta);

}
 类似资料:
  • 我的游戏有两个职业,它们都产生精灵,唯一的区别是它们的精灵向不同的方向移动。 然而,我如何检测另一个类的精灵是否与这个类碰撞,两个类都产生了很多精灵。我的想法是也使用池为每个精灵创建一个矩形。

  • 我正在使用SpriteKit在XCode中制作一个游戏。游戏中有一个玩家,他必须避免不同类型的投射物。当玩家与投射物相撞时,分数发生变化,投射物消失。然而,当两个弹丸碰撞时,它们会反弹。我想让两个炮弹每次相撞时,它们表现得像什么都没发生过一样,并保持原来的轨迹。我该怎么办? *注意:这并不是整个代码,重要的是它。

  • 在开始学习相关知识点之前,我们有必要先学习精灵和碰撞检测的含义。 精灵(英文译为 Sprite),其实在一个游戏程序中,精灵本质指的是一张张小尺寸的图片,比如游戏中的各种道具、人物、场景装饰等,它们都可以看做成一张张小的“精灵”图。除此之外,人物的移动也可以看做是一系列小精灵图构成的序列(按帧组成的序列),如下图所示: 图1:动作逐帧分解图 如果将逐帧分解后的动作,按照一定的频率播放,那么就形成了

  • 这就是正在发生的事情,游戏不断停止,因为两个圆圈相互碰撞,我正在尝试通过确保ID是正方形ID来防止这种情况,我试图让圆圈碰撞在一起,而忽略碰撞,但它没有这样做,我不知道如何确切地阻止它相互碰撞,只允许它与正方形碰撞。 基本上我想阻止这个圆与另一个圆碰撞,并允许它与正方形碰撞。 任何帮助都会很好谢谢 游戏引擎引擎类 这是我在扩展game.engine.engine包的game类中检查冲突的地方。 游

  • 我正在使用Sprite Kit中的碰撞检测。它在起作用,防止我的精灵穿越路径。然而,我在didBeginContact中没有收到通知:而且我似乎无法控制物理引擎在发生碰撞时的响应。 我让各种汽车(SKSpriteNodes)使用SKAction followPath沿着以下路径行驶:as offset:oriento path:duration: 以前,如果两辆车相交,它们都会像往常一样继续行驶,

  • 我在PyGame中创建了两个简单的精灵,其中一个是雨伞,另一个是雨滴。雨滴被添加到一个名为< code>all_sprites的sprite组中。伞精灵有自己的组,名为< code>Umbrella_sprite 雨滴从屏幕顶部“落下”,如果其中一个碰到雨伞/与雨伞碰撞..雨滴应该被删除了。但是除了特定雨滴之外,所有其他雨滴都受此影响。