Помогите с С# кодом генерации в 2D (РЕШЕНО)

Программирование на Юнити.

Помогите с С# кодом генерации в 2D (РЕШЕНО)

Сообщение nurbolg 26 окт 2019, 12:24

Всем Привет! Нужна помощь с написанием C# кода, процедурной генерации 2d пространства по оси Y с нескольких объектов в виде Chunks. Я только начал изучать программирование и для начало решил начать с простого проекта, начал создавать проект с помощью этой видеоролика https://www.youtube.com/watch?v=xh1U0Bf6wKw&t=313s , в этом ролике автор делает генерацию в 3D проекте и по оси Z, но в комментариях он написал что скрипт должен работать и по 2D проекту и по оси Y. Но генерация в 2d проекте с этим скриптами идет неправильно! Помогите написать этот код на генерацию по оси Y!!!.
Два основных скрипта которые используется для генерации в этом видеоролике это ChunkPlacer.cs и Chunk.cs

ChunkPlacer.cs
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class ChunkPlacer : MonoBehaviour {
 
    public Transform Player;
    public Chunk[] ChunkPrefabs;
    public Chunk FirstChunk;
 
    private List<Chunk> spawnedChunks = new List<Chunk>();
 
    private void Start()
    {
        spawnedChunks.Add (FirstChunk);
    }
 
    private void Update()
    {
 
        if (Player.position.y > spawnedChunks [spawnedChunks.Count - 1].End.position.y)
        {
            SpawnChunk ();
        }
 
    }
    private void SpawnChunk()
    {
        Chunk newChunk = Instantiate(ChunkPrefabs[Random.Range(0, ChunkPrefabs.Length)]);
        newChunk.transform.position = spawnedChunks[spawnedChunks.Count - 1].End.position = newChunk.Begin.localPosition;
        spawnedChunks.Add(newChunk);
    }
}
 


Chunk.cs
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Chunk : MonoBehaviour {
 
    public Transform Begin;
    public Transform End;
 
    public void Start()
    {
 
 
    }
 
}
 
Последний раз редактировалось nurbolg 14 дек 2019, 19:09, всего редактировалось 1 раз.
nurbolg
UNIт
 
Сообщения: 67
Зарегистрирован: 26 окт 2019, 12:19

Re: Помогите с С# кодом генерации в 2D

Сообщение Niker 28 окт 2019, 03:52

Y - высота, X - ширина, Z - глубина (в основном в 3д, но и 2д имеют Vector3 тоже).
Вы используйте Y, соответственно только Y-ком, вы не добьетесь нормальных результатов, вам и X нужно использовать.
Можете тут глянуть на простецкий раннер, по нему можете сделать свой любой и сколько угодно генераций уровней:
https://catlikecoding.com/unity/tutorials/runner/
Niker
UNIт
 
Сообщения: 58
Зарегистрирован: 27 сен 2019, 12:03

Re: Помогите с С# кодом генерации в 2D

Сообщение nurbolg 31 окт 2019, 10:30

Niker писал(а):Y - высота, X - ширина, Z - глубина (в основном в 3д, но и 2д имеют Vector3 тоже).
Вы используйте Y, соответственно только Y-ком, вы не добьетесь нормальных результатов, вам и X нужно использовать.
Можете тут глянуть на простецкий раннер, по нему можете сделать свой любой и сколько угодно генераций уровней:
https://catlikecoding.com/unity/tutorials/runner/


Спасибо! Я нашел проблему, допустили какие то ошибки при списывании кода С#
вот правильно написанный код
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ChunkPlacer : MonoBehaviour
{

        public Transform Player;
        public Chunk[] ChunkPrefabs;
        public Chunk FirstChunk;

        private List<Chunk> spawnedChunks = new List<Chunk>();

        private void Start()
        {
                spawnedChunks.Add(FirstChunk);
        }

        private void Update()
        {

                if (Player.position.y > spawnedChunks[spawnedChunks.Count - 1].End.position.y - 19)
                {
                        SpawnChunk();
                }

        }

        private void SpawnChunk()
        {
                Chunk newChunk = Instantiate(ChunkPrefabs[Random.Range(0, ChunkPrefabs.Length)]);
                newChunk.transform.position = spawnedChunks[spawnedChunks.Count - 1].End.position - newChunk.Begin.localPosition;
                spawnedChunks.Add(newChunk);

                if (spawnedChunks.Count > 5)
                {
                        Destroy(spawnedChunks[1].gameObject);
                        spawnedChunks.RemoveAt(0);
                }
               
        }
}
 
nurbolg
UNIт
 
Сообщения: 67
Зарегистрирован: 26 окт 2019, 12:19


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11