Size: a a a

Unity Floodилка

2020 September 30

T_

Trell _ in Unity Floodилка
valeria dmitrievna
помогите умоляю, сегодня сдавать отчёт по учебному проекту, а я полгода хуи пинала
ну покажи как ты их спавнишь
источник

VK

Vadim Karpievich in Unity Floodилка
рили, му тут что, ванги)
источник

SP

Shura Proger in Unity Floodилка
Ну я да, могу сказать, что спавнит она их кодом
источник

VK

Vadim Karpievich in Unity Floodилка
Shura Proger
Ну я да, могу сказать, что спавнит она их кодом
можешь сказать как заспавнить скраю?
источник

vd

valeria dmitrievna in Unity Floodилка
щащащаща
источник

VK

Vadim Karpievich in Unity Floodилка
Vadim Karpievich
можешь сказать как заспавнить скраю?
скажи, че ты жмешься
источник

SP

Shura Proger in Unity Floodилка
Vadim Karpievich
можешь сказать как заспавнить скраю?
Заспавшись с краю
источник

VK

Vadim Karpievich in Unity Floodилка
Shura Proger
Заспавшись с краю
жалко что ли?
источник

VK

Vadim Karpievich in Unity Floodилка
или что
источник

VK

Vadim Karpievich in Unity Floodилка
понятно все с тобой
источник

VK

Vadim Karpievich in Unity Floodилка
жид
источник

vd

valeria dmitrievna in Unity Floodилка
да ща блять скину
источник

vd

valeria dmitrievna in Unity Floodилка
я была занята
источник

VK

Vadim Karpievich in Unity Floodилка
источник

vd

valeria dmitrievna in Unity Floodилка
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class GeneratorScript : MonoBehaviour {

public GameObject[] availableRooms;
 
public List<GameObject> currentRooms;
 
private float screenWidthInPoints;

public GameObject[] availableObjects;
public List<GameObject> objects;
 
public float objectsMinDistance = 5.0f;
public float objectsMaxDistance = 10.0f;
 
public float objectsMinY = -1.4f;
public float objectsMaxY = 1.4f;
 
public float objectsMinRotation = -45.0f;
public float objectsMaxRotation = 45.0f;


// Use this for initialization
void Start () {
 float height = 2.0f * Camera.main.orthographicSize;
 screenWidthInPoints = height * Camera.main.aspect;
 print(screenWidthInPoints);
}
 
// Update is called once per frame
void Update () {
 
}

void FixedUpdate () {
 
 GenerateRoomIfRequred();

 GenerateObjectsIfRequired();
}


void AddRoom(float farhtestRoomEndX)
{
 //1
 int randomRoomIndex = Random.Range(0, availableRooms.Length);
 
 //2
 GameObject room = (GameObject)Instantiate(availableRooms[randomRoomIndex]);
 
 //3
 float roomWidth = room.transform.Find("floor").localScale.x;
 
 //4
 float roomCenter = farhtestRoomEndX + roomWidth * 0.5f;
 
 //5
 room.transform.position = new Vector3(roomCenter, 0, 0);
 
 //6
 currentRooms.Add(room);    
}

void GenerateRoomIfRequred()
{
 //1
 List<GameObject> roomsToRemove = new List<GameObject>();
 
 //2
 bool addRooms = true;
 
 //3
 float playerX = transform.position.x;
 
 //4
 float removeRoomX = playerX - screenWidthInPoints;
 
 //5
 float addRoomX = playerX + screenWidthInPoints;
 
 //6
 float farhtestRoomEndX = 0;
 
 foreach(var room in currentRooms)
 {
  //7
  float roomWidth = room.transform.Find("floor").localScale.x;
  float roomStartX = room.transform.position.x - (roomWidth * 0.5f);
  float roomEndX = roomStartX + roomWidth;
   
  //8
  if (roomStartX > addRoomX)
   addRooms = false;
   
  //9
  if (roomEndX < removeRoomX)
   roomsToRemove.Add(room);
   
  //10
  farhtestRoomEndX = Mathf.Max(farhtestRoomEndX, roomEndX);
 }
 
 //11
 foreach(var room in roomsToRemove)
 {
  currentRooms.Remove(room);
  Destroy(room);
 }
 
 //12
 if (addRooms)
  AddRoom(farhtestRoomEndX);
}

void AddObject(float lastObjectX)
{
 //1
 int randomIndex = Random.Range(0, availableObjects.Length);
 
 //2
 GameObject obj = (GameObject)Instantiate(availableObjects[randomIndex]);
 
 //3
 float objectPositionX = lastObjectX + Random.Range(objectsMinDistance, objectsMaxDistance);
 float randomY = Random.Range(objectsMinY, objectsMaxY);
 obj.transform.position = new Vector3(objectPositionX,randomY,-5);
 
 //4
 float rotation = Random.Range(objectsMinRotation, objectsMaxRotation);
 obj.transform.rotation = Quaternion.Euler(Vector3.forward * rotation);
 
 //5
 objects.Add(obj);
}

void GenerateObjectsIfRequired()
{
 //1
 float playerX = transform.position.x;
 float removeObjectsX = playerX - screenWidthInPoints;
 float addObjectX = playerX + screenWidthInPoints;
 float farthestObjectX = 0;
 
 //2
 List<GameObject> objectsToRemove = new List<GameObject>();
 
 foreach (var obj in objects)
 {
  //3
  float objX = obj.transform.position.x;
   
  //4
  farthestObjectX = Mathf.Max(farthestObjectX, objX);
   
  //5
  if (objX < removeObjectsX)
   objectsToRemove.Add(obj);
 }
 
 //6
 foreach (var obj in objectsToRemove)
 {
  objects.Remove(obj);
  Destroy(obj);
 }
 
 //7
 if (farthestObjectX < addObjectX)
  AddObject(farthestObjectX);
}
}
источник

vd

valeria dmitrievna in Unity Floodилка
там ещё объекты генерируются, но это не так важно, основная проблема с комнатами
источник

SP

Shura Proger in Unity Floodилка
Заебись
источник

VK

Vadim Karpievich in Unity Floodилка
Shura Proger
Заебись
мыслишь моими мыслями
источник

VK

Vadim Karpievich in Unity Floodилка
источник

SP

Shura Proger in Unity Floodилка
valeria dmitrievna
там ещё объекты генерируются, но это не так важно, основная проблема с комнатами
Бля. Я тебе скинул название канала, там урок называется что-то типа «генерация подземелий», почекай пж
источник