java - 旋转 2D 矩形以进行命中检测
问题描述
我正在寻找将矩形旋转特定角度,因为我有一个使用 java fx 的游戏,它让彗星以一定角度移动。如果火箭与那颗彗星相交,游戏就结束了。然而,对角彗星拥有一个 0 度的矩形,它覆盖了不必要的空间。我尝试使用以下代码,但矩形仍然是 0 度:
public void isRocketHit(){
Rectangle2D rocketrec = new Rectangle2D(rocket.getX(), rocket.getY(), rocket.getImage().getWidth(), rocket.getImage().getHeight());
for(Streak i : rstreaks){
double width = i.getImage().getWidth();
double height = i.getImage().getHeight();
Rectangle2D cometrec = new Rectangle2D(i.gmarkX(), i.gmarkY(), width, height);
double rotationCenterX = (i.gmarkX() + width)/2;
double rotationCenterY = (i.gmarkY() + height)/2;
gc.save();
gc.translate(rotationCenterX, rotationCenterY);
gc.rotate(i.getAngle());
gc.translate(-rotationCenterX, -rotationCenterY);
gc.fillRect(i.gmarkX(), i.gmarkY(), width, height);
gc.setFill(Color.AZURE);
if(rocketrec.intersects(cometrec)){
play = false;
System.out.println("HIT");
}
gc.restore();
}
}
解决方案
推荐阅读
- jquery - 使用 jquery 和 ajax 插入多个复选框值,但只插入一条记录
- agora.io - 无法连接到 Agora 服务器
- c - Doxygen 结构文档
- python - 为什么我无法从 tkinter 获取条目值作为文件名....我正在尝试使用给定名称保存图像
- c++ - C++ 使用 char 类型打印字母表,如 Excel 公式 =CHAR(CODE(A1)+1),单元格 A1 的值为
- reactjs - 如何使用 Laravel Sanctum 和 React 修复 401 Unauthorized 错误?
- python - 将numpy数组转换为字典的优雅方法
- html - CSS总是显示列表的最后一个图标被裁剪为一半
- java - 当超时设置为 >= 1 秒时,Guava ratelimiter 不起作用
- r - 扩展每组的行,同时仅更改一个变量