张咚咚 发表于 2022-2-14 18:20 我的重点是我的该想法完全错误, 不该用弹幕作视线检测 , 主要是之前想到AI是怎样看到玩家者障碍而展开研究, 会不会是从眼睛里发射多个检测弹幕而检测到玩家或者障碍, 你之前提到的分块刷新, 我看了一下, 大慨我理解是分成大的碰撞盒,里再分成小碰撞盒, 之前我就想过若太多包围盒不就弹幕要和地图所有的碰撞体进行判断那就不行, 这个分块应该可以再分小些? 若地图为100X100, 10000个小碰撞盒, 若2^10=1024 (划分后再划后再划分), 原来1万次判断应该变成仅用10次判断, 不过这只是我想, 我觉得50X50的地图已经算很大了, 至于unity 我看了B站教程是有弹幕系统碰撞, 不过我只会Ruby, 留在Ruby学习,试了才知道你的条条丝丝优化是好的, 不过也知道了就不应该用来做弹幕游戏的 |
本帖最后由 RPGzh500223 于 2022-2-15 13:24 编辑 如果墙体都是这么一整格的话,可以用类似RMVA的地图ID,判断“子弹精灵”所处位置的地图ID是否为墙体 代码的话有个问题,最好不要在数组遍历中改变数组长度,数组元素错位…… 当然判断元素是否为nil也行,但是数组越大,就同样会执行更多次的判断与循环 我一般处理精灵数组的话,是再遍历一遍;RMXP中人物状态中的操作,是先拷个副本,遍历副本操作数组本身。 sprites_array.each {|i| i.dispose if #判断} sprites_array.delete_if{|i| i.disposed?} |
几何公式不是问题,Math.hypot,x方向cos,y方向sin就行了 |
冷知识:RGD与原版RGSS3都是用的同一ruby解释器,均来自RGSS301.dll 所以两者帧数差异其实是绘图导致的, 至于RGU,由于使用的是官方版本的ruby3.0,虽然兼容性差些,但官方称速度上会有很大提升: 且RGU在Bitmap操作方面也使用GPU硬件加速(即使用纹理与shader处理位图 (所以RGD的性能可能依旧受老版本ruby牵制) (菜鸟一枚大佬勿喷) |
RGD提升的也只是你的图形速度,ruby版本都一样算法该慢还是慢。 我感觉你需要好好想象有哪些优化方案,或着你可以参考一下我之前发的Jump里面的一个分块刷新,角色(子弹)在哪个块里面就刷新哪个块里的物体。 更多能减少计算量的优化方案就要靠你的小脑袋瓜去好好想想了( 最简单暴力的就是换引擎,感觉U3D比较适合你( |
牛逼牛皮 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-22 18:05
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.