2015-06-07 2 views
0

Я работаю над игрой сверху вниз, где игрок может двигаться вверх, вниз, влево или вправо. Я столкнулся с tilemaps, но, используя Unity, я вижу идею использования Meshes. Я не совсем понимаю, как это работает. Это одна сетка (два треугольника) на одну плиту? Если я хочу выполнить прокрутку, это случай простой замены значений UV на вершину?Mesh tilemap и прокрутка

В теории, могу ли я получить бесконечную прокрутку пейзажа, создав одну большую сетку и просто заменив UV-координаты в реальном времени или я неправильно понимаю использование координат Меша и UV на атласе текстуры?

Благодаря

ответ

1

, если вы хотите, чтобы прокрутить uv`s, вы можете сделать это путем изменения текстуры смещения в методе Update, он может быть использован для фона 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); 
       } 
      } 
     } 
} 
+0

Спасибо! Итак, вместо tilemap, могу ли я использовать одну большую сетку, вычислить начальные UV-координаты для компоновки карты, а затем просто прокрутить? Похоже, что это было бы намного меньше, чем наличие «X by Y» количества плиток – TryNCode

+0

, которое вы можете делать как на самом деле, так и на своем выборе, и в качестве стороны, если ваши плитки используют один и тот же материал, они будут собраны, и будет один призыв к розыгрышу для всех –

+0

Отлично, спасибо за помощь! – TryNCode