有没有人能告诉我,为什么图像移动时会颤抖卡顿呢?
gamemaker吧
全部回复
仅看楼主
level 5
不单是我自己的,即便是从网上看的教学,以及别人的项目,都是如此。尤其是当sprite是一个单色方块时,就很明显了
比如说,我一个room是1920 x 1080大小,开了view,camera和viewport也都是1920 x 1080大小,然后全屏,就一个object,sprite是一个单色方块,然后代码就是简简单单的x+=spd,当spd是整数时,比如1、2这些就没问题,但是spd是带小数的时候,比如1.6,那object移动的时候图像就是颤抖卡顿的,为什么会这样?有没有解决办法?难道速度只能够设置为整数?
2022年05月21日 11点05分 1
level 5
我在网上看的教学,把别人的代码都抄了下来,或者直接下载了别人的项目,发现都是如此,区别只是别人用的sprite是动画,颤动卡顿的现象不明显,我直接用了一个单色的方块,颤抖的现象就很明显了
2022年05月21日 11点05分 2
level 5
我最奇怪的就是,好像都没有人提起过这个,是都没有这个现象,只有我的电脑才有?还是说大家都不在意,有一点点颤动也是可以接受的?
2022年05月21日 11点05分 3
level 5
现在我想要得到平滑顺畅的移动,只能使用整数值作为速度,可是这样也太不方便了
2022年05月21日 11点05分 4
level 5
你们可以和我一样,简单地建一个项目,room的大小是1920 x 1080,打开view,camera和viewport的大小也都是1920 x 1080大小,进入游戏后全屏,room中就一个object,使用的sprite是一个方块,然后在object的step中写x+=spd,当spd是1.6,object移动的时候图像是不是颤抖卡顿的?
2022年05月21日 11点05分 5
老哥,是颤抖的。跟你遇到的情况一样,不过我主要是实在角色拖动视野的时候卡顿
2022年09月18日 15点09分
@白雪啪啪熊 感觉还是速度的问题,增加的像素位移必须不能是带小数点的
2022年09月18日 17点09分
@云南健康蘑菇放心吃 如果是这样那太蛋疼了,我需要浮点的速度啊。我看屏幕跟随-1是立即跟随,感觉他这个是按整数像素刷新的,然后跟自己的小数位置变化导致强扯的原因 但是又不知道怎么调这个屏幕跟随速度成小数
2022年09月20日 06点09分
level 12
是不是因为像素是屏幕显示的最小单位,速度是小数代表坐标会出现小数,不可能显示半个像素,就只能模糊图像了。
2022年05月21日 13点05分 6
我也是这么想的,可是这样一来速度值的设定不就有限制了么?而且最重要的是我学GMS这么久了,好像都没人提到过,就很怀疑是不是我哪里做错了或者是我的电脑出了问题
2022年05月21日 14点05分
看了一下,也不算限制,在固定速度曲线运动(比如画圆)的时候难免会有某些方向上的小数速度,有的时候用小数坐标就会影响视觉和一些碰撞检测之类的,所以还是看情况
2022年05月21日 14点05分
以及去搜了一下,吧里以前似乎也是有人提过这事的
2022年05月21日 14点05分
@贴吧用户_5EMDC6b 传送一下,想看看
2022年05月21日 14点05分
吧务
level 13
在像素绘制时,小数会取值到最接近的整数,毕竟屏幕不可能亮起半个像素。一般来说整体运动期间在屏幕上发生1像素的抖动是难以被肉眼发觉的,除非……题主的一些设定刻意放大了这个结果。比如……
更大的显示比率……随着现在显示器分辨率的增加,操作系统也内置了屏幕缩放功能。原本逻辑上是1像素的东西可以在屏幕上用1.25、1.5甚至2像素长度的范围来显示。当然在开启view、用各种ext函数、使用surface强行放大也可以达到这个效果。结果就是逻辑上仍然会取整的数字会放大到屏幕上“更长的区域”来显示。在不同次的缩放使用的不是整数比例时,某些抖动值可能会单向放大。
更低的room speed……一般来说,room speed(或者简单理解为fps)越高,画面越流畅(当然在GM系引擎里也就意味着游戏越快),8.0时代这个数字默认是30,如今好像默认是60。这个值越低,物体移动一“次”以后的“停留时间”越长。低到一定程度以后即使是整数坐标移动,也会看上去一跳一跳的。
其他的暂时没想到,不过题主到底在做啥内容会关注到1像素抖动的啊
2022年05月23日 05点05分 7
就是我一楼所提到的啊,项目就一个room,room的大小、camera、viewport和屏幕分辨率都是1920 x 1080,项目就一个object,object使用一个48 x 48的sprite,sprite就是绿色,背景为黑色,step事件就是想x+=spd,spd等于1.6,其它就没了,然后抖动特别激烈
2022年05月23日 23点05分
就一个room,一个object,一个sprite,然后object就一个step事件,step事件里就一行代码,窗口在全屏下运行,你可以试试看有没有抖动?
2022年05月23日 23点05分
@云南健康蘑菇放心吃 没有看到抖动。要不……录下屏幕看看,不要用录制工具,这种情况还是用外部录制(比如手机拍屏)更准确。
2022年05月24日 00点05分
@q糖豆p 你是不是外行啊。请选择你的截屏导师
2022年11月03日 00点11分
level 9
是不是与垂直同步或帖率速度有关呢?忘记问问楼主呦——楼主的显示屏是不是高清大屏或老式的中小屏?小编就在老机上经常发现这个问题——可是3D游戏居然没有这个毛病……很奇怪的呢。
2022年06月06日 03点06分 8
垂直同步试了,没啥区别,帧率从60转成30了,还是一顿一顿的,但是貌似效果好很多了,没有那么刺眼,现在打算用30帧了
2022年06月09日 07点06分
@云南健康蘑菇放心吃 可能是软件的图像刷新算法相比现在的新制作软件优化度低,所以产生了这个——也可能是显卡或屏幕兼容问题。
2022年06月09日 12点06分
level 9
如果其他电脑(不同类型的显卡、屏幕、系统)都是这样,那么,可能是因为不完全像素的分割偏移效果不统一(像素移动不瞒一个像素时,就会出现特别情况,显示的移动像素不稳定,尤其是直线边,可能会直线变折线,停下移动时又正常了)
2022年06月09日 12点06分 9
level 2
你试一下这个行不行,我之前物体旋转的时候会颤,开了这个就好了,如果画面有撕裂,就把垂直同步也打开吧
2022年06月16日 05点06分 10
1