Нерест и уничтожение случайных платформ в единстве - PullRequest
0 голосов
/ 22 января 2019

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

Как я могу изменить свой скрипт, чтобы порождать другие платформы сверху и уничтожать любую платформу, находящуюся под основной камерой.Я дам свой код для порождения случайных платформ

public class GradinariuZAHAR : MonoBehaviour
{

    public Transform Player;
    public GameObject platformPrefab;
    private float minimY = 0.2f;
    private float maximY = 1.6f;
    public int numberOfPlatforms = 200;
    public float levelWidth = 3f;


    // Use this for initialization
    void Start()
    {
        GenerateChunk(.2f, 1.5f);
    }
    void GenerateChunk(float minY, float maxY)
    {

        Vector3 spawnPosition = new Vector3(0f, 0f, 0f);

        for (int i = 0; i < numberOfPlatforms; i++)
        {
            spawnPosition.y += Random.Range(minY, maxY);
            spawnPosition.x = Random.Range(-levelWidth, levelWidth);
            Instantiate(platformPrefab, spawnPosition, Quaternion.identity);
        }
    }

    void Update()
    {
        if (Player.position.y > 160) {
                Debug.Log("acum");
                minimY = maximY;
                maximY = maximY * 2;
                GenerateChunk(minimY, maximY);
        }

    }
}

1 Ответ

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

enter image description here

Просто прикрепите следующий скрипт к вашей платформе. Она уничтожит платформу, как только ее спрайт окажется полностью под камерой, именно так, как вы этого хотите.

using UnityEngine;

public class Platform : MonoBehaviour
{

SpriteRenderer sprite;
float bottomOfScreen;

private void Start()
{
    sprite = GetComponent<SpriteRenderer>();

    var cam = Camera.main;
    var screen = new Vector2(Screen.width, Screen.height);
    var camWorldPos = cam.ScreenToWorldPoint(screen);
    bottomOfScreen = camWorldPos.y - cam.orthographicSize * 2;
}

private void Update()
{
    var height = sprite.bounds.size.y;
    var topOfPlatform = transform.position.y + height / 2;

    if (topOfPlatform < bottomOfScreen)
        Destroy(gameObject);
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...