Изображение холста не прокручивается плавно - PullRequest
1 голос
/ 21 марта 2019

Добрый день,

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

Кажется, проблема в определении этой функции: RepositionImage ()

Создает промежуток между двумя изображениями, когда перемещает изображение на холст.

Вот код:

using UnityEngine;
public class ImageMove:MonoBehaviour
{
    private BoxCollider2D imageCollider;
    private float imageHorizontalLength;
    [SerializeField]
    private float scrollSpeed;
    private Rigidbody2D rb2d;

    private void Start()
    {
        rb2d = GetComponent<Rigidbody2D>();
        rb2d.velocity = new Vector2(-scrollSpeed, 0);
    }

    private void Awake()
    {
        imageCollider = GetComponent<BoxCollider2D>();
        imageHorizontalLength = imageCollider.size.x;
    }

    private void Update()
    {
        if (GetComponent<RectTransform>().offsetMin.x < -imageHorizontalLength)
        {
            rb2d.velocity = Vector2.zero;
            RepositionImage();
            rb2d.velocity = new Vector2(-scrollSpeed, 0);
        }
    }

    void RepositionImage()
    {
        Vector2 offset = new Vector2(imageHorizontalLength, 0);
        GetComponent<RectTransform>().anchoredPosition = (Vector2)transform.position + offset;
    }
}

Просмотреть изображение зазора

1 Ответ

0 голосов
/ 23 марта 2019

Вы устанавливаете положение изображения, в то время как вы должны его переводить.

Например, если позиция X вашего изображения установлена ​​на 100 каждый раз, когда она опускается ниже -100, вы потеряете, однакодалеко ниже -100 все пошло.Если он достигает -100,02, тогда, когда вы установите его на 100, вы создадите разрыв 0,02.

Вместо этого переведите его на ширину изображения: transform.Translate (200,0,0)в приведенном мною примере это будет 99,98 вместо 100 и отрицание создания разрыва.

...