Ⅰ c++ 游戏碰撞检测怎么做
在游戏开发中,经常需要进行碰撞检测算法的实现,例如判断前面是否有障碍以及判断子弹是否击中飞机,都是检测两个物体是否发生碰撞,然后根据检测的结果通过碰撞检测算法做出不同的处理。
进行碰撞检测算法的物体可能有些的形状和复杂,这些需要进行组合碰撞检测,就是将复杂的物体处理成一个一个的基本形状的组合,然后分别进行不同的检测。
下面简单介绍一下两种最基本的形状进行碰撞的时候进行的处理。
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|
在Java ME程序中,只需要将上面的条件转换成代码就可以实现了。
但是矩形碰撞只是一种比较粗糙的碰撞检测算法,因为很多实际的物体可能不是一个规则的矩形。
下面介绍一下圆形碰撞。
2、圆形和圆形的碰撞检测算法
圆形和圆形的碰撞应该说是一种最简单的碰撞,因为在数学上对于两个圆形是否发生重叠,有计算两个圆心之间的距离的公式。那么条件就变为:计算两个圆心之间的距离是否小于两个圆的半径和。
假设圆形1的左上角坐标是(x1,y1),半径是r1,圆形2的左上角的坐标是(x2,y2),半径是r2。
因为MIDP1.0中没有浮点数,而且浮点数的运算比较慢,所以我们将条件做一个简单的变换:对于条件的两边都进行平方,这样就去掉了开方的运算步骤。
下面是数学表达式:
(x1 – x2)2 + (y1 – y2)2 < (r1 + r2)2
在Java ME程序中,只需要将上面的条件转换成代码就可以了。
上面介绍的只是最基本的碰撞检测算法的实现,而实际的编程过程中遇到的碰撞检测问题要比这些复杂很多,还需要其他形式的检测,还需要进行更加深入的学习。
Ⅱ 如何用C#写飞机大战
页面设计 (游戏风格,关卡设计)
渲染方式 (弹道走向,敌机走向,击中特效,碰撞检测,击中血条扣减)
监听按键 (控制飞机行驶方向,开炮按键)
游戏算法 (控制整个游戏核心算法,基于坐标方式判定子弹,飞机,碰撞等等)
以上是一些思路,具体实现还是需要自己研究,在CSDN上有源码,可以学习借鉴下.
Ⅲ 请求cocos2dx简单高效碰撞检测的方法,不断的在update中遍历所有子弹和敌人感觉好低效。
可使用物理引擎来处理碰撞,官方的封装,会比你的效率高
Ⅳ 我用c语言写控制台坦克大战,可是子弹发射这里不会了,我本来的想法是定时扫描然后画出子弹,但结果失败
我想看看你的代码,
Ⅳ Flash怎么实现检测物体碰撞触发事件
可以用hitTestObject 这个最简单,是基于矩形的碰撞。
有剪辑a,b
你可以用a.hitTestObject(b)也可以用b.hitTestObject(a)判断
-true 碰撞
-false 未碰撞
如果是多个碰撞多个 会很卡
如果是多个碰少个 比如是飞机和子弹 可以用子弹来检测碰撞飞机!而不是用飞机来碰撞检测子弹
Ⅵ c语言子弹击中飞机后飞机消失的代码怎么写
你不把代码放上来, 谁知道怎么写, 如果是我写的话, 会判断碰撞后在飞机位置输出空格
Ⅶ 请问用代码写碰撞检测怎么写
可以用hitTestObject 这个最简单,是基于矩形的碰撞。有剪辑a,b 你可以用a.hitTestObject(b)也可以用b.hitTestObject(a)判断 -true 碰撞 -false 未碰撞如果是多个碰撞多个 会很卡如果是多个碰少个 比如是飞机和子弹 可以用子弹来检测碰撞飞机!而不是用飞机来碰撞检测子弹
Ⅷ 用C语言编写了一个仿雷电游戏,可是为什么子弹打中飞机时,飞机是消失咯,但会出现一个子弹代替飞机飞行
指针指向错误,在碰撞发生处理程序附近检查下代码,是否被指错
Ⅸ c语言飞机游戏,如何实现飞机,敌人,子弹的同时运行,是不是要用到线程啊
1.在windows下输入:CTRL+Z+Enter; 2.在Linux/Unix/Mac操作系统下输入:CTRL+D+Enter。 EOF:计算机术语,缩写通常为EOF(End Of File),在操作系统中表示资料源无更多的资料可读龋资料源通常称为档案或串流。 参考代码: #include#include#in...
Ⅹ c语言实现控制台飞机大战游戏,有办法使用一个函数实现按一下空格发一颗子弹
给子弹也弄个结构体,存储pos,speed,length等信息,弄个更新(显示)子弹的函数,在主循环里不断调用这个函数