游戏开发中常见的几种碰撞检测
来源:互联网 发布:百鸟朝凤 知乎 编辑:程序博客网 时间:2024/05/22 12:16
在游戏中,经常需要进行碰撞检测的实现,例如判断前面是否有障碍以及判断子弹是否击中飞机,都是检测两个物体是否发生碰撞,然后根据检测的结果做出不同的处理。 进行碰撞检测的物体可能有些的形状和复杂,这些需要进行组合碰撞检测,就是将复杂的物体处理成一个一个的基本形状的组合,然后分别进行不同的检测。 下面简单介绍一下两种最基本的形状进行碰撞的时候进行的处理。
1、矩形和矩形进行碰撞
一般规则的物体碰撞都可以处理成矩形碰撞,实现的原理就是检测两个矩形是否重叠。
矩形1的参数是:左上角的坐标是(x1,y1),宽度是w1,高度是h1;
矩形2的参数是:左上角的坐标是(x2,y2),宽度是w2,高度是h2。
在检测时,数学上可以处理成比较中心点的坐标在x和y方向上的距离和宽度的关系。
即两个矩形中心点在x方向的距离的绝对值小于等于矩形宽度和的二分之一,同时y方向的距离的绝对值小于等于矩形高度和的二分之一。
x方向:| (x1 + w1 / 2) – (x2 +w2/2) | < |(w1 + w2) / 2|
y方向:| (y1 + h1 / 2 ) – (y2 + h2/2) | < |(h1 + h2) / 2 |
在程序中,只需要将上面的条件转换成代码就可以实现了
2、圆形和圆形的碰撞
圆形和圆形的碰撞应该说是一种最简单的碰撞,因为在数学上对于两个圆形是否发生重叠,有计算两个圆心之间的距离的公式。
那么条件就变为:计算两个圆心之间的距离是否小于两个圆的半径和。
假设
圆形1的左上角坐标是(x1,y1),半径是r1,
圆形2的左上角的坐标是(x2,y2),半径是r2。
因为MIDP1.0中没有浮点数,而且浮点数的运算比较慢,
所以我们将条件做一个简单的变换:对于条件的两边都进行平方,这样就去掉了开方的运算步骤。
下面是数学表达式:
(x1 – x2)2 + (y1 – y2)2 < (r1 + r2)2
在程序中,只需要将上面的条件转换成代码就可以了。
- 游戏开发中常见的几种碰撞检测
- 浅谈游戏开发中碰撞检测
- 游戏开发之碰撞检测
- Android游戏开发---碰撞检测
- 游戏开发基础--碰撞检测
- Android游戏开发之检测游戏碰撞的原理实现
- android+unity3D游戏开发之简单的碰撞检测
- Unity3D游戏开发之简单的碰撞检测
- 【cocos2d-x游戏开发】物体的碰撞检测
- 横版过关游戏开发-碰撞检测
- Android游戏开发基础part7--碰撞检测
- Java简单游戏开发之碰撞检测
- Android游戏开发基础part7--碰撞检测
- [Unity3D]Unity3D 游戏开发之碰撞检测
- [Unity3D]Unity3D 游戏开发之碰撞检测
- C++游戏开发之碰撞检测算法
- Android研究之游戏开发碰撞检测
- java游戏开发之碰撞检测
- ubuntu14安装nVidia驱动和CUDA Toolkit的安装和调试
- WebService
- 关于ajax为什么要return true/false
- 顺序表实现之C语言(附加各种顺序表排序问题)
- 两个程序的爱情故事
- 游戏开发中常见的几种碰撞检测
- 51例程---led点阵
- 遇到的问题---MongoDB的java驱动的坑---启用副本集后id的update无效
- Java数据类型和MySql数据类型对应表
- 人工智能语聊的相关原理学习(二)
- 种一棵顺序存储的二叉树
- Python数据科学Jupyter-Matplotlib-Numpy-Keras-Pandas速查
- java-mail
- Inno Setup入门(十六)——Inno Setup类参考(2)