- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
《《Android游戏编程之从零开始》第四章样章》.pdf
4.14 碰撞检测
手机游戏开发中最常用到三种检测碰撞的方式,分别是:矩形碰撞、圆形碰撞和像素碰
撞。实际上,与其说是三种碰撞检测方式倒不如说是两种,其原因会在最后介绍像素碰撞时
详细阐述。
1
4.14.1 矩形碰撞
所谓矩形碰撞就是利用两个矩形之间的位置关系来进行判断,如果一个矩形的像素在另
外一个矩形之中,或者之上都可以认为这两个矩形发生了碰撞。
如果单纯去考虑哪些情况会判定两个矩形发生碰撞,倒不如反思维考虑两个矩形之间不
发生碰撞的几种情况,这样更容易想到。其实两个矩形不发生碰撞的情况就四种,如图 4-47
所示。
图4-47 矩形不发生碰撞的四种情况
图 4-47 示意了两个矩形之间永不会发生碰撞的四种情况。下面通过一个实例项目来完
成对应的四种判定。
新建项目“RectCollision ”,游戏框架为 SurfaceView 游戏框架,项目对应的源代码为
4-14-1 MySurfaceView
“ (矩形碰撞)”。首先修改 类如下:
//定义所需的变量:
//定义两个矩形的宽高坐标
private int x1 = 10, y1 = 110, w1 = 40, h1 = 40;
private int x2 = 100, y2 = 110, w2 = 40, h2 = 40;
//便于观察是否发生了碰撞设置一个标识位
private boolean isCollsion;
//然后修改绘图函数:
public void myDraw () {
...
//判断是否发生了碰撞
if (isCollsion) {//发生碰撞
paint.setColor(Color.RED );
paint.setTextSize(20);
canvas.drawText(Collision , 0, 30, paint);
!
} else {//没发生碰撞
paint.setColor(Color.WHITE);
}
//绘制两个矩形
canvas.drawRect(x1, y1, x1 + w1, y1 + h1, paint);
canvas.drawRect(x2, y2, x2 + w2, y2 + h2, paint);
2
...
}
上面代码中,isCollsion 这个变量的存在主要是区分未碰撞和已碰撞。当发生碰撞时
(isCollsion 为真),不仅改变了画笔的颜色,还绘制了一句文本信息。绘制文本的原因是
因为在书中只显示黑白两色,效果不明显,为了让大家从项目截图中明显的看出其区别而添
加的。
两个矩形默认坐标和宽高值是无法发生碰撞的,所以这里需要对其中一个矩形跟随触屏
点进行移动操作,这个操作在触屏事件监听函数中实现:
public boolean onTouchEvent(MotionEvent event) {
//让矩形 1 随着触屏位置移动(触屏点设为此矩形的中心点)
x1 = (int) event.getX() - w1 / 2;
y1 = (int) event.getY() - h1 / 2;
//当矩形之间发生碰撞
if (isCollsionWithRect(x1, y1, w1, h1, x2, y2, w2, h2)) {
isCollsion = true;//设置标识位为真
//当矩形之间没有发生碰撞
} else {
isCollsion
您可能关注的文档
- 《[人文英语]怀着爱心去发现别人的缺》.pdf
- 《[图片并茂]从零开始安装ubuntu9.04到硬盘与XP独立双系统》.pdf
- 《[数图资源]主要数据库官方指南:Web of Science、Ei、CAS等》.doc
- 《[爱心家肴:补血健脑菜谱][79页]04》.pdf
- 《[爱默生人生十论]》.pdf
- 《[第3讲]WinCC数据库 》.pdf
- 《[美]马克·维克多·汉森 罗伯特·G·艾伦《一分钟百万富翁》》.pdf
- 《[谈话的力量].(Conversationally.Speaking).(美)艾伦・加纳.文字版》.pdf
- 《[谈话的力量].(美)艾伦_加纳.》.pdf
- 《[阿呆系列:加州葡萄酒].-.California.Wine.For.Dummies.-.埃德·麦卡锡&玛丽·埃文-莫利根.插图版》.pdf
- 2024沈阳市第十中学招聘教师笔试备考题库及答案解析.docx
- 2024莆田市第一医院编外专技合同工招聘2人笔试备考题库及答案解析.docx
- 2024年浙江宁波市鄞州人民医院医共体招聘第三批高层次紧缺人才41人笔试备考试题及答案解析.docx
- 2024年西安交通大学实验技术人员招聘(9人)笔试备考题库及答案解析.docx
- 2024山东济宁市泗水县教育类事业单位招聘(第二批)11人笔试备考题库及答案解析.docx
- 2024山东菏泽市牡丹人民医院招聘专业技术人员32人笔试备考题库及答案解析.docx
- 2024山西临汾汾西县司法协理员选(招)聘15人笔试备考题库及答案解析.docx
- 2024山东烟台市海阳市益民殡仪服务有限公司招聘5人笔试备考题库及答案解析.docx
- 2024陕西西安交通大学第一附属医院健康医学科招聘派遣制护理笔试冲刺试题及答案解析.docx
- 2024山东菏泽职业学院招聘20人笔试备考题库及答案解析.docx
最近下载
- 《第二节 物联网在生活中的应用》优质课件.pptx VIP
- 2023山西长治市上党区招聘司法协理员(15人)笔试备考试题及答案解析.docx VIP
- 贵阳臻芯科技有限公司半导体研发生产项目环评报告.docx VIP
- 广东省东莞中学、广州二中、惠州一中、深圳实验、珠海一中、 中山纪念中学2024届高三第三次六校联考 数学.docx
- 惊恐障碍诊治ppt课件【53页】.pptx
- 贵阳臻芯科技有限公司视显光电芯片生产研发项目环评报告.docx VIP
- 北京市新质生产力重点产业领域人力资源开发目录、技能人才需求目录(2024年版).pdf VIP
- 乡镇2021年国际减灾日宣传活动总结.docx
- 药理学实验课 课件.ppt
- 对区委班子成员的点评材料.docx VIP
文档评论(0)