Заполнить экран 2D кубами динамически соответственно Screen.width - PullRequest
0 голосов
/ 19 февраля 2019

Я пытался использовать цикл for для создания экземпляра куба, который бы умещался на экране.Итак, я проверил, насколько широкий экран, и проверил, насколько широк мой куб.Разделил его друг на друга, и это не сработало.

Так что я думаю, что я сделал неправильно, что Screen.width в пикселях, а renderer.bounds.size.x - в мировом размере.

Как это исправить?Я не разобрался в интернете ..

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class move : MonoBehaviour
{
    public GameObject cubePrefab;
    public static bool spawn;
    float times;
    int screenWidth;
    float objectSize;

    // Use this for initialization
    void Start()
    {
        spawn = true;
        screenWidth = Screen.width;
        objectSize = GameObject.Find("vork").GetComponent<Renderer>().bounds.size.x;
        times = screenWidth / objectSize;


    }
    // Update is called once per frame
    void Update()
    {
        if(spawn == true)
        {
            for(int i=0; i < times;i++) {
                Vector3 pos = new Vector3(i * 2, i *2, 0);
                Instantiate(cubePrefab, pos, transform.rotation);
            }
            spawn = false;
        }
    }

}

2D игра

1 Ответ

0 голосов
/ 19 февраля 2019

Вам необходимо рассчитать ширину пикселя.Чтобы рассчитать положение экрана по мировому положению, используйте Camera.WorldToScreenPoint.Вот как может выглядеть функция:

public static float GetPixelWidth(GameObject gO)
{
    Bounds bounds = gO.GetComponent<Renderer>().bounds;
    Vector3 boundsPos1 = Camera.main.WorldToScreenPoint(new Vector3(gO.transform.position.x + bounds.extents.x, gO.transform.position.y, gO.transform.position.y));
    Vector3 boundsPos2 = Camera.main.WorldToScreenPoint(new Vector3(gO.transform.position.x - bounds.extents.x, gO.transform.position.y, gO.transform.position.y));
    return Vector3.Distance(boundsPos1, boundsPos2);
}

А вот как использовать функцию в вашем коде:

    // Use this for initialization
void Start()
{
    spawn = true;
    screenWidth = Camera.main.pixelWidth;
    objectSize = GetPixelWidth(GameObject.Find("vork"));
    times = screenWidth / objectSize;
}

Я проверил, и она работает с орфографической камерой

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