如何在javaFx上得到2个图像或边界相交的碰撞?我移动一张图片,但是如果我触摸第二张图片,我想触发一些东西。
gc.drawImage( img2, 0, 400, 950, 100 );
gc.drawImage( img3, 200, 200, 150, 50 );
if (event.getCode() == KeyCode.RIGHT ){
if(img2.intersects(img3.getBoundsInLocal())){
doSomething();
}
}
此代码不起作用
您可以为图像创建一个包装器,例如一个Sprite类,您可以使用该包装器为其提供x、y坐标。您可以借助矩形2D形状获得交集。
import javafx.geometry.Rectangle2D;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
public class Sprite {
private Image image;
private double positionX;
private double positionY;
private double width;
private double height;
public Sprite(Image image) {
this.image = image;
width = image.getWidth();
height = image.getHeight();
positionX = 0;
positionY = 0;
}
public void setPosition(double x, double y) {
positionX = x;
positionY = y;
}
public void render(GraphicsContext gc) {
gc.drawImage(image, positionX, positionY);
}
public Rectangle2D getBoundary() {
return new Rectangle2D(positionX, positionY, width, height);
}
public boolean intersects(Sprite spr) {
return spr.getBoundary().intersects(this.getBoundary());
}
}
好的,所以我目前正在使用LWJGL在Java中开发2d游戏。我对java及其工作原理有相当扎实的了解,并且了解游戏如何工作和LWJGL / openGL的基础知识,但我在渲染纹理方面遇到了一个非常奇怪的问题。我确定我在这里的一种绘制方法是罪魁祸首。 所以发生的事情是,如果我用这种方法渲染任何东西,那么下一个渲染的东西看起来像是字面上压缩了一端,在另一端被拉伸了,即使渲染的下一个东西不是用这种方法渲
问题内容: 我想知道判断Shape对象是否与另一个形状相交的最佳方法。目前,我在游戏中已对碰撞检测进行了分类,只要它涉及与矩形相交的Shape,反之亦然。我遇到的问题是Shape类中的intersects()方法只能将Rectangle或Point作为参数,而不能将另一个Shape用作参数。有没有一种有效的方法来测试两个Shape对象是否以任何方式重叠?我尝试的一种方法是使用for循环生成一个点区
在将OpenSAML从1.1升级到2.6.1(需要xerces-impl依赖项)之后,启动时会出现以下堆栈: xerces-impl重新定义了一些jre类,并附带了重新定义一些jre接口的XML-API。DataType.DataTypeFactoryImpl来自xerces-impl。 我读过用Java/Maven处理“Xerces地狱”?并尝试排除XML-API,但xerces-impl抛出N
null JDBC URL:jdbc:ucanaccess://f://workspaceNetbeans/msaccessdb/data/datenbank2.accdb “用户名”和“密码”留空 “测试连接”-按钮会导致错误消息: 无法使用 net.ucanaccess.jdbc.ucanaccessDriver建立到jdbc:ucanaccess://f:\workspaceNetBeans
我想检测rect什么时候碰到障碍物(obst1和obst2,obst3暂时不加)。我的障碍随着路径转换而移动。所有的形状都是长方形。提前感谢!!< br >以下是我的代码:
问题内容: 我正在写的游戏中有两个角色,玩家和敌人。定义如下: 然后用: 我可以使用键盘来移动player(),但是在尝试检测两者之间的碰撞时我很茫然。很多人说过要使用Rectangles,但是作为一个初学者,我看不到如何将其链接到现有代码中。谁能为我提供一些建议? 问题答案: 我认为您的问题是您没有为球员和敌人使用好的OO设计。创建两个类: 您的播放器应具有X,Y,Width和Height变量。