求教一个代码上的问题
luastg吧
全部回复
仅看楼主
level 11
北溟大江山
楼主
我想实现一个把所有bullet冰冻的函数Freezebullet,冰冻后应该静止并且没有判定,代码如上。光标处的那句话注释掉的话有冰,但是bullet还是运动的(冰块也一起),而且有判定;不注释掉的话也能冰,但屏幕马上就被一大片preimg给覆盖了,至于是不是静止有没有判定就看不到了。求教一下应该怎么改?
@隔壁的桌子
2013年02月03日 04点02分
1
level 9
フエケテリゴ
这就开始搞冰冻了。。
2013年02月03日 05点02分
3
フエケテリゴ
为什么老会带上这个 久了没用忘了哪里关了
2013年02月03日 05点02分
北溟大江山
冰冻好复杂啊。。。
2013年02月03日 12点02分
level 2
wishstudio
obj.class=bullet_ice
这句话总给人心惊肉跳的感觉……私心里觉得把当前的子弹删掉再创建一个会不会更好一些……从来没见过哪门语言可以把一个类的对象无缝转化为另一个类的
2013年02月03日 06点02分
4
北溟大江山
嗯,这样是有风险,但删掉再创建的话又有雾化效果要去除,并且colli属性也不能在init中设置,有点复杂
2013年02月03日 12点02分
level 11
北溟大江山
楼主
明白没有静止并且有判定是因为那句话注释掉了,所以init函数压根没有执行,把colli和setv放到freezebullet中设定就好了。但是为什么那句话没注释掉就会产生一堆不断膨胀的preimg呢?这个有点不明白
另外,在尝试DZZ中一颗子弹冻住,附近的子弹也会接连冻住的效果,不过似乎这样每帧的运算量似乎有点大?
2013年02月03日 12点02分
5
隔壁的桌子
是有点大。。
2013年02月03日 13点02分
北溟大江山
回复 隔壁的桌子 :再问个问题,有没有办法把一个obj的所有task全部去掉?
2013年02月03日 13点02分
北溟大江山
回复 隔壁的桌子 :还有,那些preimg为什么会不断膨胀啊?
2013年02月03日 13点02分
隔壁的桌子
回复 北溟大江山 :self.task={}
2013年02月03日 14点02分
level 8
隔壁的桌子
obj.vx=0 obj.vy=0 obj.colli=false
2013年02月03日 12点02分
6
北溟大江山
继续请教一个问题,是不是bullet.lua是在player.lua之后载入的,因此不能在player.lua中重写bullet:frame的函数?有没有什么比较好的解决办法啊?
2013年02月19日 15点02分
隔壁的桌子
用编辑器自带的patch功能,但是不要采取覆盖player.lua的办法,直接在patch里写代码重定义函数。
2013年02月20日 01点02分
北溟大江山
回复 隔壁的桌子 :3Q~目前进度只剩下连锁冰冻还有一些bug没调通了~
2013年02月20日 15点02分
level 8
隔壁的桌子
另外,不如不要重载render函数,直接obj.img='ice_huge'
2013年02月03日 13点02分
7
北溟大江山
因为要把原来的子弹也画出来,所以得重载一下
2013年02月03日 13点02分
level 11
北溟大江山
楼主
目前已经完成按照弹型来决定冰块大小,冰块碎裂的效果还没想好怎么搞。音效也还没确定下来。另外就是在哪里怎么用这个冰冻效果也还没想好。
拿黑球君的游戏做了下测试:
2013年02月03日 13点02分
8
フエケテリゴ
⑨被灵梦冻了
2013年02月03日 15点02分
mnkjoilhk
我去,改了之后挺好看啊。。。。我觉得如果是我的话,会把效果应用于⑨的符卡完美冰冻
2013年02月04日 01点02分
GrealismB
⑨做自机的bomb(
2013年02月04日 05点02分
北溟大江山
回复 フエケテリゴ :耐斯此锅咪~
2013年02月06日 10点02分
level 2
wishstudio
想了一会儿,关于大战争那样的冻结,怎么减少计算量,大家参考:
朴素地做需要每帧判断任意一个子弹是否和任意一个冰块相交。考虑,如果屏幕只有一点点地方被冻起来,那么冰块很少,算法不会很慢;同样如果大部分地方都冻起来了,那么大部分子弹一出来就被冻住了,活跃子弹少,相应算法也不会很慢。慢的话只可能满在冻起来的区域和子弹数刚好处于不多不少的中间状态。
我们可以将屏幕分区,比如4*4=16块,大概估计一下,每块内冰块最多几十个,大多数情况下屏幕上不超过四五百发子弹,每个子弹只需要去搜索对应的那一块内的,而且事实上块内冰块越多子弹撞冰块可能性越大,这样乘起来不超过几千,再乘个60还是完全可以接受的。还可以加一些其他的优化:比如子弹速度不快的情况下,可以几帧判断一次等,只要保证不会在冰块密集区神穿即可,边界部分穿了玩家不会介意的。
2013年02月06日 12点02分
9
wishstudio
沿这个死路又想了下,其实完全可以把冰块看成小正方形,然后尽可能多地分块,用一个标志数组表示每块里有没有冰块就可以了。对于占地面积比较小的子弹,就看成一个点去对应的分块里看看有没有撞上冰块,占地面积比较大的,比如大玉,可以在圆周上再取4个关键点拿去判断就差不多了。实现起来难度也挺低
2013年02月06日 12点02分
wishstudio
诶。。刚回的被吞了么。。
2013年02月06日 12点02分
北溟大江山
想了一下,说一下我的看法:首先是用子弹去遍历冰块还是用冰块去遍历子弹的问题。拿一次冰冻来说,冰块数量必然会逐渐增多,拿整屏400颗子弹来说,最多也有40000次计算dist,不知道这个计算量能不能处理过来,但这是屏幕内子弹数目固定时的,如果敌机不断发射子弹,就会形成连锁反应,导致更大计算量
2013年02月06日 13点02分
北溟大江山
某一帧内,用子弹去遍历冰块和用冰块去遍历子弹,相乘得到的应该是一样的,但是用子弹去遍历冰块,必须在这次的冰冻攻击内不断给每一个新生成的子弹添加一个task,可行性有点难以保证,用冰块去遍历子弹,则较容易实现
2013年02月06日 13点02分
level 11
北溟大江山
楼主
今天魔都下雪下得太凶残了,联系到冰冻是不是很应景
(水一个)
2013年02月07日 10点02分
10
level 11
北溟大江山
楼主
今日进度:完成⑨自机基本射姬动作
过年了,又要有段时间暂停进度了,在此提前祝各位新年快乐吧!
2013年02月08日 13点02分
11
北溟大江山
话说为什么对话的立绘是魔理沙的啊~
2013年02月08日 13点02分
フエケテリゴ
⑨好吊
2013年02月08日 16点02分
61粉丝
⑨机体赛高!好想使用一下QAQ。。
2013年02月08日 16点02分
北溟大江山
回复 61粉丝 :巴菲特弗里斯!呆萌的玻璃渣!
2013年02月09日 06点02分
1