Установить ширину рендера Sprite на определенное расстояние - PullRequest
0 голосов
/ 31 декабря 2018

Я хочу изменить размер спрайта на заданное расстояние следующим образом:

float range = 5;

private void OnMouseDown()
{
    // my problem is that i want to change this sprite 
    // as same distance range in the update method

    GetComponent<SpriteRenderer>().transform.localScale = range;
}

void update()
{
    if (Vector2.Distance(monster.transform.position, transform.position) < 
        range)
    {
        // do something
        // on the first position enter the range
    }
}

Мне нужен способ преобразования единиц расстояния в размер изображения, чтобы сделать изображение таким же размером, как и расстояние, например circle.transform.localScale=Vector2.Distance(monster.transform.position, transform.position);

Спрайт имеет круг, поэтому ширина и высота должны соответствовать расстоянию к концу операции.

1 Ответ

0 голосов
/ 01 января 2019

Кстати, вы должны использовать GetComponent только при необходимости.Это дорогая операция.Лучше всего кэшировать результаты, когда это возможно:

public SpriteRenderer mySpriteRenderer;

...

// e.g., in Awake()
mySpriteRenderer = GetComponent<SpriteRenderer>();

Чтобы ответить на ваш вопрос, вы можете получить текущее значение bounds.size.x в текущем масштабе и сравнить его с расстоянием, которое вы хотите сопоставить.Затем вы можете изменить локальный масштаб, чтобы настроить масштаб в зависимости от соотношения между текущим размером и размером цели:

private void OnMouseDown()
{
    float goalDistance = Vector2.Distance(monster.transform.position, transform.position);

    float currentSize = mySpriteRenderer.bounds.size.x;

    float goalScaleRatio = goalDistance/currentSize;

    transform.localScale *= goalScaleRatio;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...