NaOH888 2021-02-21 08:43 采纳率: 50%
浏览 106
已采纳

java游戏:关于很多弹幕碰撞检测,你们是怎么做的?

我最近开坑了一个类似东方project的弹幕游戏制作,由于之前没有经验(也就是说我是个小白),遇到弹幕碰撞时产生如下问题:

我有敌人的ArrayList<Enemy> 也有玩家的弹幕ArrayList<Bullet> 但是对于类似东方这种游戏,不管是敌人还是弹幕都是很多的,我尝试用for来一个个检测,但显然,cpu一下子就升上去,那么有什么好的方法? 

  • 写回答

1条回答 默认 最新

  • thisisnew 2021-02-21 10:26
    关注

    以下几个建议吧。

    1.不在渲染范围的不要检测。这个一般游戏引擎都会这个事情,这个答主应该不需要做了。

    2.for循环还是免不了的,但是for循环里面的检测算法可以进行优化,比如可以将敌人按照4个象限划分,玩家的也按照4个象限划分。这样每个象限内的元素进行碰撞,减少双层for循环的次数。比如检测的算法,可以写的粗糙点,比如只判断4个边角之类的,减少算法时间。(核心就是时间换空间,空间换时间,精度换时间)。或者让用户换cpu

    3.使用shader碰撞,不知道是否可行。没做过这一块。即把碰撞检测交给gpu来做,减少cpu使用率

     

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)