首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

2D飞机游戏的弹幕跟碰撞设计

2013-03-06 
2D飞机游戏的弹幕和碰撞设计我要吐血了,好不容易完成在3D下面用sprite渲染2D,现在又来了。。。弹幕咋办?难道

2D飞机游戏的弹幕和碰撞设计
我要吐血了,好不容易完成在3D下面用sprite渲染2D,现在又来了。。。

弹幕咋办?难道要边添加到链表,然后再像粒子系统那样,一次性绘制N个?如果这样,碰撞又是个问题!

如果加到链表,在for循环一个个绘制出来,这个可以吗?但总感觉要拖累速度,总要经过渲染管线。。但是这样碰撞相对简单点,毕竟数量有限,不过两个光检测主角是否中弹复杂度就达到O(n),如果是敌机再多点,在需要一个链表去保存,在和主角[来源:GameRes.com]的子弹去碰撞检测,至少得O(n*n)。。当然我这里假设的还是使用矩形碰撞。。

顺便问问,出了矩形碰撞,在STG游戏中还有什么别的好点的碰撞检测吗?

http://bbs.gameres.com/showthread.asp?threadid=105982
这个帖子的弹幕就是我想要的效果,但。。他的却一点不卡。 

所以来求助各位大大!

如果有示例的代码,就更好了!谢~
[解决办法]
你可以联系那个游戏的作者 请教。。。
[解决办法]
你的游戏跑在几十MHz的机器上么……
[解决办法]
你的敌机也会被敌机子弹击毁么?怎么得出了O(n^2)?
[解决办法]
自机会被敌机和敌机子弹击毁,所以把敌机和敌机子弹属性组织到一起为一条链表。
敌机会被自机子弹击毁,所以把自机子弹属性组织到一起为一条链表。
敌机的某些子弹会被自机子弹击毁,所以把敌机可被击毁子弹组织到一起为一条链表。
设自己子弹数为m,敌机数量为n,敌机可被击毁子弹为j,敌机不可被击毁子弹为k。则BigO为:
O(m*n)+O(n+j+k)+O(m*j)
你觉得碰撞运算量大么?

绘制,要把同样的子弹组织成批,这样效率高,没错。有几种子弹,就组成几条绘制链表呗。
同一个子弹,完全可以加到多条链表中。
[解决办法]
不过是3年前的作品了。作者也不一定健在

我艹,楼主威武......
[解决办法]
碰撞检测的代价没有你想象的那么高, 有很多办法可以加速碰撞检测的

相反sprite绘制那么多的效果的代价更高

2d和3d不同, 2d的效果只是一个图的复制而已, 3d下粒子系统那个玩意用的太多消耗就太大了
[解决办法]
碰撞处理不要用包围盒一个个和飞机比较,不然没效率 用map大法
把地图划分为NXN的格子 然后看看那些子弹是跟自己的飞机在一个格子里的 之后再@#$@%…… 你懂的
[解决办法]
弹幕用数学公式,比如cos和sin就行。

至于碰撞,要精确一点的可以弄成多个三角形的。

热点排行