gameObject вне края экрана - PullRequest
0 голосов
/ 25 мая 2019

У меня есть этот фрагмент кода от моего персонажа 2D игры. Он отлично работает при повторном порождении моего персонажа на случайных позициях экрана, но проблема в том, что этот код работает с моим игровым центром символов, я имею в виду, что он генерирует центральную позицию в произвольном диапазоне, и там на краю экрана мой персонаж становится наполовину из экрана ... мне нужен этот код, работающий на любом устройстве Android, и я не знаю, как я могу решить эту проблему. Кто-нибудь простое решение?

Извините за мой начинающий английский.

//Generate Random X
    float generateX()
    {
        float x = Random.Range(Camera.main.ScreenToWorldPoint(new Vector2(0, 0)).x, Camera.main.ScreenToWorldPoint(new Vector2(Screen.width, 0)).x);
        return x;
    }

    //Generate Random Y
    float generateY()
    {
        float y = Random.Range(2.0f, Camera.main.ScreenToWorldPoint(new Vector2(0, Screen.height)).y);
        return y;
    }

void generateCoordinates()
    {
        transform.position = new Vector2(generateX(), generateY());
    }

1 Ответ

0 голосов
/ 25 мая 2019

Так как ваш 2D персонаж является спрайтом, он должен иметь компонент рендерера спрайтов.Вы можете получить его границы с:

Bounds bounds = transform.GetComponent<SpriteRenderer>().bounds;

, и вы можете редактировать свой код как:

float generateX()
{
    float x = Random.Range(Camera.main.ScreenToWorldPoint(new Vector2(0, 0)).x, Camera.main.ScreenToWorldPoint(new Vector2(Screen.width, 0)).x);
    //add/remove extents to x value to keep sprite in bounds of screen
    if(x < 0) 
        x += bounds.max.x;
    else 
        x -= bounds.max.x;
    return x;
}
...