如何对旋转后的图形进行碰撞检测?

billwei800 2010-09-19 06:03:23
刚学java不久,正跟着一个网上做坦克大战的视频练习做一个海战的游戏,但是船不像坦克,是长条的,旋转之后在进行碰撞检测时总是在错误的位置触发碰撞的事件,实在是想不出办法了。

首先我为了画出船旋转的效果用了Graphics2D里的rotate(theta,x,y)方法来旋转坐标系,然后再在旋转后的坐标系里画出船,就是一个椭圆,但是当我检测子弹和船是否碰撞时,子弹好像总是在相对于旋转之前的船的位置发生碰撞,我猜想因为坐标系旋转了,所以椭圆左上角点的坐标相对于旋转后的坐标系并没有旋转,依然是没旋转时的数值,所以判断碰撞也是在没旋转的位置判断的。
说的有点乱,总之一涉及到要旋转坐标系的东西我头就大了......

另外有没有可以不用rotate方法旋转坐标系就能画出旋转图形的方法啊......听说java不适合做游戏,这才领略到
...全文
490 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
billwei800 2010-09-29
  • 打赏
  • 举报
回复
还不会弄图片的,自己也不会做,先暂时用多个圆覆盖到椭圆位置上模拟出椭圆的形状来代替好了
zyc1314199 2010-09-26
  • 打赏
  • 举报
回复
学习。。。
cqfantasy 2010-09-23
  • 打赏
  • 举报
回复
“听说java不适合做游戏,这才领略到”

这话说的太搞笑。。首先要想到是自己的问题。

其实船旋转后的样子完全可以做成一张图片,或者 你用的旋转后对于图片“原点”的碰撞框范围是否正确,做坐标旋转这种方法 本来就是简单问题复杂化
colaice2009 2010-09-23
  • 打赏
  • 举报
回复
我说的图片当然是指透明的png.
其实检测的方法有很多啊.可以用数学方法.利用四个点的坐标来求是否在矩形内部.这个应该不难啦.
如果怕麻烦的话可以将矩形的各点对于锚点的相对坐标用数组存储下来.然后直接比较就行了.
billwei800 2010-09-23
  • 打赏
  • 举报
回复
不是图片,因为要达到碰撞检测的的效果,船是长条的,如果只是一个图片的话斜着和垂直方向被攻击到的地方不都一样了么

简单的说一下我现在的问题就是如何检测一个斜着的矩形的碰撞
colaice2009 2010-09-21
  • 打赏
  • 举报
回复
没看清楚,原来你问的是java的问题.
没必要旋转坐标系啊,将船旋转就行了.以前横着画,现在竖着画就行啦.
对应的检测区域也改变就行了.
billwei800 2010-09-21
  • 打赏
  • 举报
回复
我用的是awt包里面Rectangle类里面的intersects()方法,要求输入一个矩形的x,y坐标和宽和高,然后与当前的矩形求是否有交集,返回一个boolean值来判断是否相撞,但是这个输入的矩形不能旋转,只能是和坐标系垂直的方向上的,这就没法达到碰撞我那个旋转之后的矩形的效果了

那应该用什么方法对碰撞检测呢?
colaice2009 2010-09-21
  • 打赏
  • 举报
回复
java我是太熟,不过画一个斜的矩形干吗要旋转坐标系。
如果你是指图片的话,事先准备几张不同角度的图就行了。
billwei800 2010-09-21
  • 打赏
  • 举报
回复
但是比如要画一个斜的矩形不是就要用到rotate方法先旋转坐标系么?
当然如果不旋转坐标系而能画出斜的图形是最好了,有这样的方法么?
raoyongchao 2010-09-21
  • 打赏
  • 举报
回复
把旋转和碰撞分开处理,旋转处理后要改变碰撞触发的条件
colaice2009 2010-09-19
  • 打赏
  • 举报
回复
不是的,旋转后碰撞检测就以新图形为准了。

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧