我想检测rect什么时候碰到障碍物(obst1和obst2,obst3暂时不加)。我的障碍随着路径转换而移动。所有的形状都是长方形。提前感谢!!< br >以下是我的代码:
Rectangle rect= new Rectangle(100,225,50,125);
Rectangle obst1=new Rectangle(1200,300,30,50);
Rectangle obst2=new Rectangle(1200,300,91,51);
Rectangle obst3=new Rectangle(1200,300,20,50);
ImagePattern one = new ImagePattern(new Image("1.png"));
ImagePattern two = new ImagePattern(new Image("2.png"));
ImagePattern cactus1 = new ImagePattern(new Image("1cactus.png"));
ImagePattern cactus4 = new ImagePattern(new Image("4cactus.png"));
rect.setFill(one);`enter code here`
rect.setArcHeight(5);
rect.setArcWidth(5);
//rect.setFill(Color.VIOLET);
obst1.setFill(cactus1);
obst3.setFill(RED);
obst2.setFill(cactus4);
PathTransition path = new PathTransition();
path.setPath(l2);
path.setNode(obst1);
path.setDuration(Duration.millis(3000));
path.setCycleCount(Timeline.INDEFINITE);
path.setRate(-0.5);
//path.play();
PathTransition path2 = new PathTransition();
path2.setPath(l2);
path2.setNode(obst2);
path2.setDuration(Duration.millis(3000));
path2.setCycleCount(Timeline.INDEFINITE);
path2.setRate(-0.6);
//path2.play();
PathTransition path3 = new PathTransition();
path3.setPath(l2);
path3.setNode(obst2);
path3.setDuration(Duration.millis(3000));
path3.setCycleCount(Timeline.INDEFINITE);
path3.setRate(-0.3);
//path3.play();
int TimeLine=2;
Pane pane = new Pane();
pane.getChildren().add(obst1);
pane.getChildren().add(obst2);
//pane.getChildren().add(obst3);
pane.getChildren().add(rect);
pane.getChildren().add(l1);
Scene scene = new Scene(pane, 300, 250);
TranslateTransition tt = new TranslateTransition(Duration.millis(300));
tt.setFromY(00f);
tt.setToY(-100f);
tt.setCycleCount(TimeLine);
tt.setAutoReverse(true);
ParallelTransition pt = new ParallelTransition(rect, tt);
scene.setOnKeyPressed(e->
{
if(e.getCode()==KeyCode.UP)
{
pt.play();
}
if(e.getCode()==KeyCode.ESCAPE)
{
path.pause();
path2.pause();
path3.pause();
pt.pause();
}
if(e.getCode()==KeyCode.ENTER)
{
path.play();
path2.play();
path3.play();
pt.play();
}
});
EventHandler<ActionEvent> eventHandler = e ->
{
if(img==1)
{
rect.setFill(two);
img=2;
}
else
{
rect.setFill(one);
img=1;
}
};
Timeline animation = new Timeline(
new KeyFrame(Duration.millis(80), eventHandler));
animation.setCycleCount(Timeline.INDEFINITE);
animation.play();
primaryStage.setTitle("Dinausor");
primaryStage.setScene(scene);
primaryStage.show();
如果所有形状都是矩形
对象,则可以使用相交 (...)
方法来检查碰撞。下面是一个示例:
Rectangle r1 = new Rectangle(0,0,100,100);
Rectangle r2 = new Rectangle(50,50,100,100);
System.out.println(r1.intersects(r2));// prints "true".
好的,我想试试这个: > 然后检查碰撞检测,如图所示。第一种是正面碰撞,第二种是侧面碰撞。碰撞http://img802.imageshack.us/img802/2934/rectangles2.png 然后删除精灵,只保留代码中的向量。(位置和旋转)我希望如此,因为我想在这些位置添加3d Cars和他的旋转。我的意思是,在2d中没有精灵的碰撞检测。 在游戏结束时,将没有精灵。仅三维对象。 有人
在我的自上而下游戏中,当我的玩家通过婴儿床时,我该如何让他发生碰撞?我用的是交叉矩形。 这是我的密码 更新方法 在渲染方法中 这是完整的代码 谁能告诉我矩形碰撞检测的正确实现是什么?没有重叠,我是这个框架的新手。致谢和预付款:)
我是libGDX的新手,据我所知,Intersector类有矩形/矩形、圆/圆、圆/矩形和多边形/多边形的重叠方法,但由于某种原因,它似乎没有任何检查多边形/矩形或多边形/圆的方法。 有没有推荐的方法来检查多边形和矩形/圆之间的冲突? 另外,为什么这被排除在跨部门类之外,有什么原因吗?(即,我应该避免它吗?如果是这样,推荐的替代方案是什么?
我有一个2维数组叫做,也就是32x32。每个元素表示清除路径,表示墙。 窗口分辨率为800x800,这意味着
我在Android Studio中使用libgdx,并且我正在使用精灵碰撞检测。我需要知道如何检测两个形状不规则的精灵之间的碰撞。我的精灵是从png图像纹理创建的。是否可以使用子画面的边框作为检测表面?使用在子画面周围绘制的矩形或圆形将不够准确。感谢您的帮助!
问题内容: 我想知道判断Shape对象是否与另一个形状相交的最佳方法。目前,我在游戏中已对碰撞检测进行了分类,只要它涉及与矩形相交的Shape,反之亦然。我遇到的问题是Shape类中的intersects()方法只能将Rectangle或Point作为参数,而不能将另一个Shape用作参数。有没有一种有效的方法来测试两个Shape对象是否以任何方式重叠?我尝试的一种方法是使用for循环生成一个点区