成就中心 DouJin Terraria! 社区服务 统计排行 帮助
  • 12498阅读
  • 23回复

[心得交流]【GM弹幕制作疑问】有关几个问题想问问

发帖
14
信仰
0
蓝点
15
符卡
0
        接触GM也有一段时间了,然后把附带的帮助文件都看了一遍,发觉还非常方便。目前已经学会全方位,旋转,随

机,双重旋转弹幕的基础制作了。尝试进阶比较高级的弹幕中(例如波与粒子改写)

        不过在制作期间还是有几个问题不知如何解决,望这里的同人高手能指教

        1,在做自机狙弹幕时我用了刀弹,对子弹循环运动使用move_towards_point(),但子弹图片的方向并没有指向目标方向*(相当于子弹侧着走),请问这里如何解决(先前看过franniss大的point_direction法但没能用会)
        2,当同屏子弹数量达到500+的时候fps急速下降,去看东方小镇的有关fps讨论但也不是很清楚,能否具体解释方法?
        3,如何对一个object里设定sleeping?(间隔式发射) 之前自己想用条件语句来对定时器进行间隔但貌似不行(敲自己)

        暂时先提出这些问题~本人是GM菜鸟接触GM不是很久,但已经用GM修改出很多好看的弹幕(自己认为的)。如果可以希望能点对点的学习下,因为很喜欢弹幕里突出的视觉美感。此求助帖如果不是应该放在这请版主转走,下次会注意~
        希望能得到帮助,请多指教~
本帖最近评分记录: 1 条评分 蓝点 +2 隐藏
franniss 蓝点 +2 2011-02-27 鼓励认真提问
发帖
661
信仰
0
蓝点
651
符卡
0
只看该作者 沙发  发表于: 2011-02-27
我答一个,其余等西瓜。

FPS注意不要在子弹obj里增添无关事件,因为数量太多,这会影响效率。正常的一般2000弹没问题。
发帖
14
信仰
0
蓝点
15
符卡
0
只看该作者 板凳  发表于: 2011-02-27
回 1楼(franniss) 的帖子
可能咱的是低端机吧,非独立显卡935(倒),不过就是单纯的 波与粒子 (小镇里拿到的GM示例) 全屏子弹最多就850个speed=3然后就看fps=30左右跳动(倒倒倒
发帖
661
信仰
0
蓝点
651
符卡
0
只看该作者 地板  发表于: 2011-02-27
其实测GM弹数阈值的是一个凤凰范例嗯,回头我找一下。
发帖
14
信仰
0
蓝点
15
符卡
0
只看该作者 4楼 发表于: 2011-02-27
回 3楼(franniss) 的帖子
恩恩谢谢franniss大~

顺便冒出一张自己修改的波与粒子(只是改了speed吧汗……
  • 描述:自己改编波与粒子
    图片:QQ截图未命名.png
发帖
661
信仰
0
蓝点
651
符卡
0
只看该作者 5楼 发表于: 2011-02-27
怎么说呢,那个花样的圆和弹幕一起看,感觉不错。

也许弹幕并没怎么改动,结合纹样,看起来也有异样美感。
发帖
130
信仰
6
蓝点
114
符卡
0
只看该作者 6楼 发表于: 2011-02-28
1. 关于子弹图片方向
move_towards_point() 只会修改子弹的移动,并不会对子弹的贴图进行旋转
所以要让子弹图片方向与运动方向相一致的话,只用一个move_towards_point是不够的~
只要对image_angle 这个变量进行赋值,即可完成子弹贴图旋转的操作

在建立子弹sprite的时候,自己的习惯是子弹的头朝向正右(正好是直角坐标系里的0度角方向)
在这种情况下,运动方向是多少度,贴图就旋转多少度
写成代码的话,就是在move_towards_point()后面加一句image_angle=direction;

顺便说一句,通过对direction,speed 这两个变量的赋值,也可以达到使用move_towards_point()的效果

2.关于fps
自己再稍微补充一点
有的时候忘记了对跑出窗体的子弹进行销毁,也会导致fps急剧下降~是自己以前常犯的错误

3.间隔式发射
还是使用alarm事件比较适合
把子弹发射的代码放到alarm事件里面,这样只有每当alarm到时的时候才会发射子弹
比如说
Create事件里写:
alarm[0]=30;

alarm[0]到时事件里写:
instance_create(xx,yy,bb)......//子弹发射代码,这里就不具体写了
alarm[0]=40; //让这个alarm[0]在40帧后再次到时,使他可以一直保持每40帧执行一次

这样就会产生在开始30帧后,每隔40帧发射一次子弹的效果了~
本帖最近评分记录: 1 条评分 蓝点 +2 隐藏
franniss 蓝点 +2 2011-02-28 详细解答
发帖
14
信仰
0
蓝点
15
符卡
0
只看该作者 7楼 发表于: 2011-02-28
回 6楼(萃香西瓜) 的帖子
多谢指点~对于第二点自己也注意了,只要出游戏房间就销毁自己。

接下来想明白如何在游戏房间里创建游戏范围。当初自己试想创建边缘object(相当于自己画一面墙),但可能这会带来很多不必要的麻烦,所以想知道在房间里怎么定义一个游戏范围(而不是直接去撞房间边缘了)

昨晚突然想到一个问题,我使用了keyboard_check()来定义自机的八向控制,但当同时按下左/右下接触边缘会发生不能移动状况,在东方游戏里碰到边缘便会平行于边缘优先进行移动(接触边缘移动),请问怎么处理这里的优先度?

请指教~
发帖
130
信仰
6
蓝点
114
符卡
0
只看该作者 8楼 发表于: 2011-02-28
关于游戏范围,有一个现成的事件可以用~

在事件里有一个other,点他后会看到有一个outside room
当object跑出游戏范围的时候,这个事件就会触发

拿这个来清除出屏的子弹会很方便

关于移动控制,你可以把对x的移动范围检测与对y的移动范围检测分离开,这样就不会相互影响了~

比如这样写:


//前面先根据按键进行移动,然后再进行检测

//对x的移动范围检测
if (x<20 || x>620){
    x=xprevious;
}

//对y的移动范围检测
if (y<20 || y>460){
    y=yprevious;
}

//注:xprevious,yprevious都是内建变量,表示x/y坐标最近一次修改以前的数值
本帖最近评分记录: 1 条评分 蓝点 +2 隐藏
franniss 蓝点 +2 2011-02-28 详细解说
发帖
661
信仰
0
蓝点
651
符卡
0
只看该作者 9楼 发表于: 2011-02-28
http://u.115.com/file/f415d6201

之前说的凤凰范例,已上传。
描述
快速回复

您目前还是游客,请 登录注册
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
认证码: