如何删除这个" giggly"缓慢移动精灵时的效果?
我已尝试在Unity编辑器中QualitySettings
和ImportSettings
中的过滤模式中调整抗锯齿值,但这并没有改变任何内容。
理想情况下,我希望将过滤模式保持为Point (no filter)
并将抗锯齿功能设置为2x
精灵位于GameObject的Sprite Renderer组件内。
我已在此处上传了我的Unity项目:http://www.filedropper.com/sprite
我真的不知道如何解决这个问题......任何人都可以帮助我的个人项目吗?
答案 0 :(得分:55)
我制作了一个快速动画来演示这里发生的事情:
网格表示显示器的输出像素。如果我们能够以无限的亚像素分辨率渲染它,我已经覆盖了我们想要采样的滑动精灵。
每个网格单元中心的点代表它们的采样点。因为我们正在使用Nearest-Nieghbour / Point过滤,这是他们关注的纹理中唯一的一点。当新颜色的边缘穿过该采样点时,整个像素会立即改变颜色。
当源纹素网格与输出像素不对齐时出现问题。在上面的例子中,精灵是16x16纹素,但我缩放它在显示器上占据17x17像素。这意味着,在每个帧的某个地方,一些纹素必须重复。当我们移动精灵时,这种情况会发生变化。
因为每个纹素的呈现略大于像素,所以有一个时刻它完全桥接两个相邻像素的采样点。两个采样点都落在同一个放大的纹理像素内,因此两个像素都将纹素视为最接近的纹素,并且纹素在两个位置输出到屏幕。
在这种情况下,由于只有1/16的比例差异,每个纹素只在一个或两个帧的奇怪情况下,然后它转移到它的邻居,产生一个双倍像素的波纹,似乎滑过了图像。
(One could view this as a type of moiré pattern由于纹素网格和采样网格的相互作用而产生的差异
修复是确保您缩放像素图片,以便每个纹素显示为像素的整数倍。
1:1
或2:1,3:1 ......
使用更高的倍数可让精灵以小于其自身纹素大小的增量移动,而不会影响艺术的预期外观。
所以:密切关注输出的分辨率和应用于资产的缩放,以确保它们之间保持整数倍的关系。 CAD97链接的博客文章提供了实现这一目标的实际步骤。
编辑:为了在您上传的Unity项目中进行演示,我修改了相机设置以匹配您的像素与单位设置,并进行了以下测试。顶部的Mario具有略微非整数的纹理像素比(1.01:1),而底部的Mario具有1:1。你只能看到顶级马里奥展出的涟漪文物:
答案 1 :(得分:9)
您可能会对this blog post感兴趣在Unity中制作“像素完美”2D游戏。
一些相关的摘录:
如果您使用Unity中的所有默认设置开始您的像素游戏,那将会非常糟糕!
让你的像素化游戏看起来很漂亮的秘诀是确保你的精灵渲染在漂亮的像素边界上。换句话说,确保精灵的每个像素都在一个屏幕像素上渲染。
这些其他设置对于尽可能使事情变得清晰至关重要。
在精灵上:
- 确保您的精灵使用无损压缩,例如真彩色
- 关闭mipmapping
- 使用点采样
在渲染质量设置中:
- 关闭各向异性过滤
- 关闭抗锯齿
通过创建使用Sprite / Default着色器并将其附加到SpriteRenderer的自定义材质,启用精灵着色器中的像素捕捉。
此外,我只想指出除非您正在应用物理, Never Use FixedUpdate 。此外,如果你的精灵有一个碰撞器并且正在移动,它应该附加一个Kinematic RigidBody,即使你永远不会使用物理,也可以告诉引擎碰撞器将会移动。
答案 2 :(得分:0)
这里有同样的问题。我注意到相机的设置和比例对于解决波动问题也很重要。