首页 / JAVA / Java游戏中的碰撞检测?
Java游戏中的碰撞检测?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java游戏中的碰撞检测?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1764字,纯文字阅读大概需要3分钟。
内容图文
![Java游戏中的碰撞检测?](/upload/InfoBanner/zyjiaocheng/764/7041d06c859c4cac9b76ba1ddb65bf94.jpg)
我正在开发一种游戏,其中我有运动图像的碰撞检测问题.游戏中有一个宇宙飞船和一些小行星(障碍物).我想检测它们之间的碰撞.我怎样才能做到这一点?
解决方法:
对于除矩形之外的任何事物,碰撞检测通常都很棘手.
我过去这样做的方法是为每个对象提供图像和掩码.因此,例如,像Lost in Space的Jupiter 2太空船这样的物体将具有以下图像和掩模:
X 00000100000
XXXXXXX 00111111100
X X 01111111110
X X 11111111111
X X 01111111110
XXXXXXX 00111111100
XXX 00001110000
图像是被屏幕划分的,但是掩模是用于碰撞检测的.您会注意到蒙版中的1基本上是图像的轮廓和内容.
检测碰撞的方式:
>检查矩形是否重叠.如果没有,就不会发生碰撞.
>否则创建一个由其掩码组成的对象编号1的矩形.
>构造另一个由其蒙版组成的对象2矩形.
>按位-AND矩形2与矩形1的重叠部分.
>如果矩形1中还有1位,则表示发生了碰撞.
这考虑了“接近未命中”,其中每个对象的边界矩形重叠但不一定是对象轮廓本身.按位运算符是检测此问题的有效方法.
这是一个箭头没有碰到气球的例子 – 在我的图形设计技巧之前颤抖:
....xx....
..xx..xx..
.x......x.
.x......x.
x........x
x........x
.x......x.
.x......x.
..xx..xx..
....xx.**y.....
.y......
yyyyyyyy
.y......
..y.....
你可以看到,即使矩形重叠(见** y),箭头实际上并没有与气球接触.通过对掩码应用按位AND运算,这些位将最终为零,从而导致非冲突.
@kyoryu在他的评论中提出了一个有趣的观点.有些游戏很适合用较小的矩形组成对象,你可以根据矩形组件简化碰撞检测(不必担心像素完美).例如,我们的老朋友太空入侵者(实际上是该游戏中对抗太空入侵者的防守者)可能由两个矩形组成,X和Y,导弹由Z制成:
YYYY .Z.
YYYY .Z.
XXXXXXXXXXXX .Z.
XXXXXXXXXXXX ZZZ
XXXXXXXXXXXX .Z.
XXXXXXXXXXXX
这可以归结为对两个太空入侵者矩形的导弹的简单矩形检查 – 考虑到导弹的大小,即使你联系其中一个导弹,你也可能把它称为碰撞.角色(考虑它们是近距离导弹,而不是影响变种的导弹).
内容总结
以上是互联网集市为您收集整理的Java游戏中的碰撞检测?全部内容,希望文章能够帮你解决Java游戏中的碰撞检测?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。