我一直在尝试在 Unity 中使用四边形来显示纹理来制作无限滚动的 2D 背景。我的想法是根据玩家的位置改变四边形的偏移。由于某种原因,当我更改偏移量时,我的图像无法正确重复,并且一旦达到偏移量 2,图像就会完全消失。
如果有人知道如何解决这个问题,如果您能回复我,我将不胜感激。
选择原始纹理而不是游戏对象。
1。将纹理类型更改为纹理。
2。将环绕模式更改为重复。
3。单击“应用”。完成!
最新版本的 Unity 纹理菜单已更改。见下图:
现在要根据脚本对纹理进行动画处理,
1。创建一个四边形
GameObject -> 3D Object ->Quad
。将四边形缩放至您想要的尺寸
2。创建一盏灯。
GameObject->Light->Directional Light
。您可以将光强度调整为您喜欢的任何强度。
3。将纹理/精灵拖动到场景视图中的四边形。
现在开始你的脚本:
public GameObject quadGameObject;
private Renderer quadRenderer;
float scrollSpeed = 0.5f;
void Start()
{
quadRenderer = quadGameObject.GetComponent<Renderer>();
}
void Update()
{
Vector2 textureOffset = new Vector2(Time.time*scrollSpeed,0);
quadRenderer.material.mainTextureOffset = textureOffset;
}
对于 2D,您还可以使用 GameObject ---> 3D Object 菜单中的 Plane 或 Quad,上面的代码应该可以正常工作。
画布中循环背景图像动画:
渲染模式 > 屏幕空间 - 相机。
渲染相机 > 主相机。
层中顺序 > -1。
纹理类型 > Sprite 2D 和 UI。
网格类型 > 全矩形。
环绕模式 > 镜像。
着色器 > UI/默认。
源图像 > 您的图像(步骤#5)。 材料 > 您的材料(步骤#7)。
创建BackgroundAnimation.cs脚本并使用下面的代码:
使用UnityEngine; 使用 UnityEngine.UI;
公共类BackgroundAnimation:MonoBehaviour { 私人图片_image;
private readonly float _scrollSpeed = 0.125f;
private void Awake()
{
_image = GetComponent<Image>();
}
private void Start()
{
_image.material.mainTextureOffset = new(0, 0);
}
private void Update()
{
ScrollBackground();
}
private void OnApplicationQuit()
{
_image.material.mainTextureOffset = new(0, 0);
}
private void ScrollBackground()
{
Vector2 textureOffset = new(0, Time.time * _scrollSpeed);
_image.material.mainTextureOffset = textureOffset;
}
}
将脚本附加到背景图像。