【问题标题】:Detecting collision between sprites检测精灵之间的碰撞
【发布时间】:2023-04-02 20:38:02
【问题描述】:

我的游戏有两个类,它们都生成精灵,唯一的区别是它们的精灵向不同的方向移动。

public void newSprite(float x,float y){
        Sprite sprite= Pools.obtain(Sprite.class);
        sprite.set(Mysprite);
        sprite.setPosition(x,y);
        arrayList.add(sprite);
    }

if(condition==true){
  newSprite(); //calls the method to spawn a new sprite
}

但是我如何检测来自另一个类的精灵是否与这个类碰撞,有很多精灵是从两个类中产生的。我的想法是使用池为每个精灵创建一个矩形。

【问题讨论】:

    标签: java libgdx collision


    【解决方案1】:

    参数

    这个方法也接受两个精灵

    假设

    此方法假定两个精灵都包含属性x、y、width 和height。

    退货

    这个方法返回一个布尔值来表示它们是否碰撞。

    bool detectCollision(Sprite sprite1, Sprite sprite2) {
    
        return ((sprite1.x <= sprite2.x && (sprite2.x + sprite2.width) - sprite1-x <= sprite1.width + sprite2.width) ||
                (sprite1.x >= sprite2.x && (sprite1.x + sprite1.width) - sprite2.x <= sprite1.width + sprite2.width)) && // Check for x 
            ((sprite1.y <= sprite2.y && (sprite2.y + sprite2.height) - sprite1.y <= sprite1.height + sprite2.height) || 
                (sprite1.y >= sprite2.y (sprite1.y + sprite1.height) - sprite2.y <= sprite1.height + sprite2.height)); // Check for y
    
    }
    

    此方法检查每个矩形的最外侧,并检测距离是否小于两者的组合的宽度或高度。如果两个轴都检查为真,则可以保证它们是接触的。

    告诉我它是否有效!

    【讨论】:

    • 好的,我明天告诉你,现在是上午 12 点,我真的需要睡觉了。谢谢
    【解决方案2】:

    您可以计算两个精灵之间的距离(从它们的中心)。如果它们之间的距离小于它们一半半径的总和,那么你就有碰撞。

    【讨论】:

      猜你喜欢
      • 2017-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多