Unity - Spawn Prefabs (Clone Object) получил неправильную позицию - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь создать префабы (объект-клон) ОПЯТЬ со случайной позицией после SetActive (false) .


Что я хочу:

После Объект пловца введите триггер с помощью Префабы (объект-клон) ,

set Префабы (объект-клон) до SetActive (false) и затем он должен появляться в произвольной позиции.


Что я сделал:

Swimmer.cs <- Это делает клон недействительным <strong>SetActive (false) при срабатывании

void OnTriggerEnter2D (Collider2D other) {
        if (other.gameObject.tag == "Trash") {
            other.gameObject.SetActive (false);
        }
}

Trash.cs

    public GameObject columnPrefab;                                 
    public int columnPoolSize = 5;                                 
    public float spawnRate = 3f;                                    
    public float columnMin = -1f;                                  
    public float columnMax = 3.5f;                                  

    private GameObject[] columns;                                   
    private int currentColumn = 0;                                  

    private Vector2 objectPoolPosition = new Vector2 (-15,-25);     
    private float spawnXPosition = 10f;

    private float timeSinceLastSpawned;  

void Start()
        {
            timeSinceLastSpawned = 0f;


            columns = new GameObject[columnPoolSize];

            for(int i = 0; i < columnPoolSize; i++)
            {
                columns [i] = (GameObject)Instantiate (columnPrefab, objectPoolPosition, Quaternion.identity);
            }
        }


        void Update()
        {
            timeSinceLastSpawned += Time.deltaTime;
                if (GameControl.instance.gameOver == false && timeSinceLastSpawned >= spawnRate) {   
                    timeSinceLastSpawned = 0f;


                    float spawnYPosition = Random.Range (columnMin, columnMax);

                    // This part what I am using to set it active
                    columns [currentColumn].SetActive(true);
                    columns [currentColumn].transform.position = new Vector2 (spawnXPosition, spawnYPosition);

                    currentColumn++;

                    if (currentColumn >= columnPoolSize) {
                        currentColumn = 0;
                    }
                }
        }



То, что я получил:

Префабы (клонированный объект) успешно порождаютно в неправильном положении (с плавающей точкой справа)

Вы можете взглянуть на это изображение Click here.


Итак, как установить объект клонирования ActiveActive и создать егоэто для случайной позиции?Спасибо

1 Ответ

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

На самом деле проблемы нет, и все в вашей игре работает так, как должно.

Ваш Scene View прокручивается немного дальше, чем Game View.Вы можете увидеть это, если вы посмотрите на зеленые водоросли в левой части экрана.Посмотрите, как ваш Scene View показывает больше листьев?

Scene View предназначен исключительно для редактора Unity, и вы можете масштабировать и прокручивать его независимо от того, где находится ваша камера в вашем игровом представлении.Если вы хотите переместить камеру в игровом окне, вам нужно либо изменить параметры камеры в объекте «Основная камера» в вашей иерархии, либо обновить код Camera.main с помощью кода.

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