【问题标题】:Collision detection between two images in javajava中两个图像之间的碰撞检测
【发布时间】:2016-04-02 07:24:11
【问题描述】:

我需要知道火箭什么时候撞到流星,img2是流星,img是火箭

g.drawImage(img, posX - img.getWidth(this)/2, posY - img.getHeight(this), this);
        g.drawImage(img2,posX1 - img2.getWidth(this), posY1 - img2.getHeight(this),this);
        System.out.println(posY-img.getWidth(this));
        System.out.println(posY1);
      }
      public void colid (){
        if (posY1+img.getWidth(this)>= posY-img2.getWidth(this) ){

            System.out.println("teste");
        }

【问题讨论】:

  • 是测试还是测试?
  • 请修正您的代码,因为它不能编译(第一个大括号上方是否缺少行?)
  • 这只是部分代码。测试
  • 你只是想做简单的矩形碰撞,对于exampleexmapleexampleexample
  • 或者您想知道example 的非 alpha 像素何时发生碰撞?

标签: java


【解决方案1】:

您可以为每个对象(例如火箭或流星)创建一个Rectangle

还有一个可以使用的 Rectangle 方法

boolean intersects(Rectangle r)
Determines whether or not this Rectangle and the specified Rectangle intersect.

所以你可以检查

if (rectangleA.intersects(rectangleB){
 System.out.println("Colliosion!!")
}

【讨论】:

    【解决方案2】:

    应该这样做

            Rectangle r1 = new Rectangle(posX - img.getWidth(this)/2, posY - img.getHeight(this), img.getWidth(this), img.getHeight(this));
            Rectangle r2 = new Rectangle(posX1 - img2.getWidth(this), posY1 - img2.getHeight(this), img2.getWidth(this), img2.getHeight(this));
    
            boolean collision = r1.intersects(r2);
    

    注意:您在第一张图片中将宽度除以 2,而不是第二张。也许它应该是,但只是想让你知道如果不是。

    【讨论】:

    • 他几乎可以肯定,但它只是在中心甚至改变了图像位置
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多