- 浏览: 420299 次
- 性别:
- 来自: 深圳/湛江
文章分类
最新评论
-
wangyudong:
很多API doc生成工具生成doc需要重度依赖代码里加注解的 ...
[ios]利用xcode自动生成项目文档 -
tiger1819:
有源码么,想学习
[android]仿360状态,类流量监控桌面浮动显示 -
119568242:
借我一双翅膀 写道大哥,求指教啊?
IOS 开发,调用打电话,发短信,打开网址 -
借我一双翅膀:
大哥,求指教啊
IOS 开发,调用打电话,发短信,打开网址 -
li247276297:
楼主 是不是要加个权限?
[android]仿360状态,类流量监控桌面浮动显示
Android菜鸟日记
32-游戏中的碰撞
一、矩形与矩形的碰撞
用反向思维,除了不碰撞的都是碰撞的。
既
四种情况
如图:
口1 口2 口 口3 口4 红色表示相对应的矩形 则 有x1 y1 w1 h1 X2 y2 w2 h2
|
1的情况 y2 < y1 && y2 < y1 - h2 2的情况 x2 < x1 && x2 < x1 - w2 3的情况 x2 > x1 && x2 > x1 + w1 4的情况 y2 > y1 && y2 > y1 + h1 |
二、圆形与圆形的碰撞
主要就是判断圆心距离
(Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)) > r1 + r2) |
Math.pow(double a,double b)a的b次方
三、圆形与矩形的碰撞
第一种:就是圆形与矩形边框的碰撞检测
检测Y轴圆心到矩中心的距离是否小于半径+矩形X轴1/2宽
检测X轴圆心到矩中心的距离是否小于半径+矩形Y轴1/2高
第二种:就是特殊的矩形四个角检测
四个矩形顶角到圆心的距离是否小于半径
四、多矩形的碰撞
把不规则图片看成多矩形然后检验碰撞。
下面是我自己封装的一个碰撞类
封装了上面几个加上
2组矩形数组内容之间检验是否碰撞的类
package com.lurencun.SurfaceUtil; import android.graphics.Rect; /** * 游戏碰撞检测类 * * @author poolo * @version 1.00 */ public class CollisionUtil { /** * 矩形碰撞检测 参数为x,y,width,height * * @param x1 * 第一个矩形的x * @param y1 * 第一个矩形的y * @param w1 * 第一个矩形的w * @param h1 * 第一个矩形的h * @param x2 * 第二个矩形的x * @param y2 * 第二个矩形的y * @param w2 * 第二个矩形的w * @param h2 * 第二个矩形的h * @return 是否碰撞 */ public boolean IsRectCollision(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2) { if (x2 > x1 && x2 > x1 + w1) { return false; } else if (x2 < x1 && x2 < x1 - w2) { return false; } else if (y2 > y1 && y2 > y1 + h1) { return false; } else if (y2 < y1 && y2 < y1 - h2) { return false; } else { return true; } } /** * 矩形碰撞检测 参数为Rect对象 * * @param r1 * 第一个Rect对象 * @param r2 * 第二个Rect对象 * @return 是否碰撞 */ public boolean IsRectCollision(Rect r1, Rect r2) { return IsRectCollision(r1.left, r1.top, r1.right - r1.left, r1.bottom - r1.top, r2.left, r2.top, r2.right - r2.left, r2.bottom - r2.top); } /** * 圆形碰撞检测 * * @param x1 * 第一个圆的圆心x * @param y1 * 第一个圆的圆心y * @param r1 * 第一个圆的半径 * @param x2 * 第二个圆的圆心x * @param y2 * 第二个圆的圆心y * @param r2 * 第二个圆的半径 * @return 是否碰撞 */ public boolean IsCircleCollision(int x1, int y1, int r1, int x2, int y2, int r2) { // 两点距大于 2圆形半径距离 if (Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2)) > r1 + r2) { return false; } return true; } /** * 圆形与矩形碰撞检测 * * @param x1 * 第一个矩形的x * @param y1 * 第一个矩形的y * @param w1 * 第一个矩形的宽 * @param h1 * 第一个矩形的高 * @param x2 * 圆的圆心x * @param y2 * 圆的圆心y * @param r2 * 圆的半径r * @return 是否碰撞 */ public boolean IsC2RCollision(int x1, int y1, int w1, int h1, int x2, int y2, int r2) { if ((Math.abs(x2 - (x1 + w1 / 2)) > w1 / 2 + r2) || Math.abs(y2 - (y1 + h1 / 2)) > h1 / 2 + r2) { return false; } return true; } /** * 多矩形碰撞 * * @param rArray1 * @param rArray2 * @return 是否碰撞 */ public boolean IsRectsCollision(Rect[] rArray1, Rect[] rArray2) { for (Rect rt1 : rArray1) { for (Rect rt2 : rArray2) { if (IsRectCollision(rt1, rt2)) { return true; } } } return false; } }
2012-01-11
poolo
发表评论
-
[android]使用 Matrix 的随触摸旋转的ImageView
2013-02-22 01:58 7867使用 Matrix 的随触摸旋转的ImageView 突 ... -
[android]动态改变按钮背景状态 StateListDrawable
2012-10-29 10:52 1428动态改变按钮背景状态 很少用到 上次和六哥聊到。 ... -
[android]ViewPage上无法通过onKeyDown()获得按钮事件
2012-08-20 04:53 1332系统无法监听到遥控器在VewPage上的按钮事件,如需 ... -
[android]待解决 lisTview 的onItemSelected 监听事件焦点的问题。
2012-08-18 21:18 2138今天遇到个问题 到目前为止 一直不理解为什么 大概描述下布局 ... -
[android]layout_weight 在layout_width 为fill_parent 与wrap_content 时的不同含义
2012-08-12 12:52 1238转自:http://hi.baidu.com/l ... -
[android]仿制新浪微博消息页面 图标切换动画
2012-08-10 17:33 3988研究了下以前不怎么用到的动画效果的实现 顺便做了一个新浪微 ... -
[android]仿制新浪微博消息页面 图标切换动画
2012-08-10 17:33 3研究了下以前不怎么用到的动画效果的实现 顺便做了一个新浪微 ... -
[android]仿制新浪微博消息页面 图标切换动画
2012-08-10 17:33 0研究了下以前不怎么用到的动画效果的实现 顺便做了一个新浪微 ... -
[android]Activity切换动画
2012-08-10 12:23 1448今天准备比赛的时候 遇到了这个问题。 查了些资料 ... -
android中ADT版本问题:无故报 java.lang.NoClassDefFoundError
2012-07-31 22:08 1747今天修改一个老项目的时候,发现在所有配置正确的情况下,代目无任 ... -
[android]仿360状态,类流量监控桌面浮动显示
2012-05-27 22:03 5981前两天看到部分音频播放器可以实现在桌面上显示歌词,360那个浮 ... -
[转]android开发问题记录 "founderapp"
2012-02-08 10:48 1029这段时间,由于某种原因,一直在做android手机开发, ... -
关于weight
2012-02-05 21:20 808layout_weight=1后,除了其它的控件之外剩 ... -
判断SD卡是否存在
2012-02-02 17:54 836android.os.Environment.getEx ... -
[转]Android文件管理器介绍
2012-02-02 16:50 3046转自:http://www.linuxidc.com/L ... -
[转]Android文件管理器介绍
2012-02-02 16:49 5转自:http://www.linuxidc.com/L ... -
[转]android 几何图形的绘制
2012-02-01 16:06 2148转自:http://byandby.iteye.c ... -
Android菜鸟日记31-selector 中使用 shape
2012-01-11 23:05 1559Android菜鸟日记 31- ... -
Android菜鸟日记30-View与SurfaceView
2012-01-11 22:45 913Android菜鸟日记 30 View与Surfa ... -
[转]Android开发者指南-Manifest.xml-activity[原创译文]
2012-01-10 17:55 910<activity android:allowTa ...
相关推荐
NULL 博文链接:https://poolo.iteye.com/blog/1208206
NULL 博文链接:https://poolo.iteye.com/blog/1207974
菜鸟入侵--利用资源搜索动画教程,内附有详细的使用说明 菜鸟入侵之利用资源篇 菜鸟在入侵的时候,如果能充分利用现有的资源,那将对自己的入侵起很大的
职场菜鸟升职记----完整版 描述了一个编程菜鸟一年升职到项目经理的故事,和《疯狂的程序员》有些类似
菜鸟到老鸟-教你玩转Mac操作
股市菜鸟必读----“笑傲股市”学习笔记.pdf
STM32菜鸟学习手册-罗嗦版 。
RedHatLinux菜鸟入门教程--无私奉献了!希望对你有帮助
菜鸟入手tesseract-vs2013 菜鸟入手tesseract-vs2013 菜鸟入手tesseract-vs2013
python菜鸟快乐游戏编程_pygame 演讲人 202x-11-11 2020 Python菜鸟快乐游戏编程-pygame-课件PPT模板全文共14页,当前为第1页。 目录 contents 第4章pygame基础知识 第5章植物大战僵尸 第1章python菜鸟快乐游戏编程_...
菜鸟学T-SQL与C# 增删改查 菜鸟学T-SQL与C# 增删改查 菜鸟学T-SQL与C# 增删改查 菜鸟学T-SQL与C# 增删改查 菜鸟学T-SQL与C# 增删改查
android-emulator-webrtc 它包含一组React组件,可用于从浏览器与android模拟器进行交互。 它旨在与连接到正在运行的仿真器的一起使用。 有关如何运行可通过网络访问的仿真器的示例,请参见脚本。 npm install --...
百度盘下载地址
菜鸟学SSH-v1.0.pdf
Bootstrap-菜鸟离线教程-支持导航直接跳转-支持可视化布局
DelPhi7教程之菜鸟先飞版--帮你打通任督二脉(第1式).新手学习之最
html网页制作 菜鸟成长史---Web网页设计--MIUI10网页模仿.zip
手打从菜鸟到入门--电脑篇 此文章推荐刚刚接触电脑的朋友们阅读,书籍会更新,属于网络文章,相信对大多数网友会有帮助!