网格图块地图和滚动

Mesh tilemap and scrolling

我正在开发一款自上而下的游戏,玩家可以在其中上下左右移动。我遇到过 tilemaps,但自从使用 Unity 后,我看到了使用 Meshes 的想法。我不太明白这是怎么回事。每块瓷砖是一个网格(两个三角形)吗?如果我要执行滚动,是否只是简单地换出每个顶点的UV值?

理论上,我可以通过创建一个大网格并简单地实时交换 UV 坐标来获得无限景观滚动,还是我误解了纹理图集上网格和 UV 坐标的使用?

谢谢

如果你想滚动uv`s,你可以通过改变更新方法中的纹理偏移来实现,它可以用于2d游戏的背景

using UnityEngine;
using System.Collections;

public class ScrollingUVs : MonoBehaviour 
{
    public int materialIndex = 0;
    public Vector2 uvAnimationRate = new Vector2( 1.0f, 0.0f );
    public string textureName = "_MainTex";

    Vector2 uvOffset = Vector2.zero;

    void LateUpdate() 
    {
        uvOffset += ( uvAnimationRate * Time.deltaTime );
        if( renderer.enabled )
        {
            renderer.materials[ materialIndex ].SetTextureOffset( textureName, uvOffset );
        }
    }
}

当你想在平面上移动一个对象时,你可以使用对象滚动,当它到达一端时,它会像一个循环一样出现在它的初始位置

public class ScrollingObj : MonoBehaviour 
{
    float speed ;  
    float resetDistance;  
    float initialDistance;  
    boolean isVertical;  

     void Start()
    {
      isVertical=false;
    }


        void Update ()  
        {  
            float move = speed * Time.deltaTime;  
            if (isVertical) {  
                transform.Translate(Vector3.down * move, Space.World);  
                if (transform.position.y < resetDistance)  
                {  
                    transform.position = Vector3(transform.position.x, initialDistance, transform.position.z);  
                }  
            }else{  
                transform.Translate(Vector3.left * move, Space.World);  
                if (transform.position.x < resetDistance)  
                {  
                    transform.position = Vector3(initialDistance, transform.position.y, transform.position.z);  
                }  
            }  
        }  
}