设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索

用弹幕作为视线检测, 错误视范请勿模仿

查看数: 2839 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-2-14 15:18

正文摘要:

本帖最后由 ppspssss 于 2022-2-18 22:08 编辑 错误视范请勿模仿,仅为楼主一时想出来错的方法还是想试 如真想研究视线检测(我也不知叫什么) 请研究专业的文章 在试之前已预测到效率会特别差, 但还想试一下是差 ...

回复

ppspssss 发表于 2022-2-18 21:56:38
张咚咚 发表于 2022-2-14 18:20
RGD提升的也只是你的图形速度,ruby版本都一样算法该慢还是慢。
我感觉你需要好好想象有哪些优化方案,或着 ...

我的重点是我的该想法完全错误, 不该用弹幕作视线检测 , 主要是之前想到AI是怎样看到玩家者障碍而展开研究, 会不会是从眼睛里发射多个检测弹幕而检测到玩家或者障碍,

你之前提到的分块刷新, 我看了一下, 大慨我理解是分成大的碰撞盒,里再分成小碰撞盒, 之前我就想过若太多包围盒不就弹幕要和地图所有的碰撞体进行判断那就不行, 这个分块应该可以再分小些? 若地图为100X100, 10000个小碰撞盒, 若2^10=1024 (划分后再划后再划分), 原来1万次判断应该变成仅用10次判断, 不过这只是我想, 我觉得50X50的地图已经算很大了,

至于unity 我看了B站教程是有弹幕系统碰撞, 不过我只会Ruby, 留在Ruby学习,试了才知道你的条条丝丝优化是好的, 不过也知道了就不应该用来做弹幕游戏的
RPGzh500223 发表于 2022-2-15 13:14:44
本帖最后由 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?}
SailCat 发表于 2022-2-14 18:32:06
几何公式不是问题,Math.hypot,x方向cos,y方向sin就行了

点评

这么一提点, 从hypot两点间距离的公式 , 求出最短距离的墙块, 知道了原点和墙的远近, 应该就求出第一种(360度射线)解法, 第二种三角形方法就想不到  发表于 2022-2-15 21:26
Admenri 发表于 2022-2-14 18:24:27
冷知识:RGD与原版RGSS3都是用的同一ruby解释器,均来自RGSS301.dll
所以两者帧数差异其实是绘图导致的,
至于RGU,由于使用的是官方版本的ruby3.0,虽然兼容性差些,但官方称速度上会有很大提升:

且RGU在Bitmap操作方面也使用GPU硬件加速(即使用纹理与shader处理位图
(所以RGD的性能可能依旧受老版本ruby牵制)
(菜鸟一枚大佬勿喷)

点评

RGU激活了JIT吗  发表于 2022-2-14 20:08
张咚咚 发表于 2022-2-14 18:20:31
RGD提升的也只是你的图形速度,ruby版本都一样算法该慢还是慢。
我感觉你需要好好想象有哪些优化方案,或着你可以参考一下我之前发的Jump里面的一个分块刷新,角色(子弹)在哪个块里面就刷新哪个块里的物体。
更多能减少计算量的优化方案就要靠你的小脑袋瓜去好好想想了(
最简单暴力的就是换引擎,感觉U3D比较适合你(
任小雪 发表于 2022-2-14 15:35:46
牛逼牛皮
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-22 18:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表