Скрипт случайного генератора объектов

This commit is contained in:
LikhenkoVG 2025-01-28 22:25:26 +03:00
parent fc630bfd33
commit 802960ab9b
11 changed files with 791 additions and 7703 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,59 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &4172121947614057135
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1496298588955676855}
- component: {fileID: 4991181804557560453}
m_Layer: 0
m_Name: Spawn Area
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1496298588955676855
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4172121947614057135}
serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &4991181804557560453
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4172121947614057135}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6961f6e142293184b9a12fe3db1fdede, type: 3}
m_Name:
m_EditorClassIdentifier:
_Prefabs:
- {fileID: 763973163060105107, guid: 1cba2280f61c904438953011bb914c2c, type: 3}
- {fileID: 6759501887051197769, guid: 21cba59c7e14ded47b6d43dec8052b0c, type: 3}
- {fileID: 4482222050759661, guid: c6425bc281e4ddd43817764a4e7988b6, type: 3}
- {fileID: 3448942595357207450, guid: 63914808aa4ff3b4db990d77b29e11f8, type: 3}
- {fileID: 5023089173133301389, guid: ba0b389d44c17b54eb9abb889a6f2cd3, type: 3}
- {fileID: 8275329469098789300, guid: 45bb213d4ed6e1a44918bbc891a0ea9b, type: 3}
- {fileID: 240148579861008588, guid: 8ce84c3150757ea4c8017a959bc97e92, type: 3}
- {fileID: 2989525219562377736, guid: 5a8e66a66c846cd4c84b09703aba1b18, type: 3}
- {fileID: 499987509891949225, guid: 41dd2961b742a3b48b0dff804aec0e73, type: 3}
_SpawnArea: {x: 145, y: 1, z: 4}
fixedDistance: 3
NumOfRep: 3

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 93702c4eea4afdd4997dda71b984d72a
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -558,7 +558,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!4 &189138649
Transform:
m_ObjectHideFlags: 0
@ -821,111 +821,6 @@ Transform:
m_Children: []
m_Father: {fileID: 189138649}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &373654111
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 373654115}
- component: {fileID: 373654114}
- component: {fileID: 373654113}
- component: {fileID: 373654112}
m_Layer: 0
m_Name: Cube
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!65 &373654112
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 373654111}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &373654113
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 373654111}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: b3186208b7cc28c449e2cd6509adc565, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &373654114
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 373654111}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &373654115
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 373654111}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -23.323534, y: 87.72688, z: -610.021}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &399794495
GameObject:
m_ObjectHideFlags: 0
@ -1556,6 +1451,111 @@ Transform:
m_Children: []
m_Father: {fileID: 189138649}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &605799519
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 605799523}
- component: {fileID: 605799522}
- component: {fileID: 605799521}
- component: {fileID: 605799520}
m_Layer: 0
m_Name: Test
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!65 &605799520
BoxCollider:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 605799519}
m_Material: {fileID: 0}
m_IncludeLayers:
serializedVersion: 2
m_Bits: 0
m_ExcludeLayers:
serializedVersion: 2
m_Bits: 0
m_LayerOverridePriority: 0
m_IsTrigger: 0
m_ProvidesContacts: 0
m_Enabled: 1
serializedVersion: 3
m_Size: {x: 1, y: 1, z: 1}
m_Center: {x: 0, y: 0, z: 0}
--- !u!23 &605799521
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 605799519}
m_Enabled: 0
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 2
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 3
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &605799522
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 605799519}
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
--- !u!4 &605799523
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 605799519}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 17.25, y: 0, z: 120}
m_LocalScale: {x: 150, y: 1, z: 7}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &613999067
GameObject:
m_ObjectHideFlags: 0
@ -3543,6 +3543,63 @@ Transform:
m_Children: []
m_Father: {fileID: 189138649}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1495349271
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1495349273}
- component: {fileID: 1495349272}
m_Layer: 0
m_Name: Cube (2)
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
--- !u!114 &1495349272
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1495349271}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 6961f6e142293184b9a12fe3db1fdede, type: 3}
m_Name:
m_EditorClassIdentifier:
_Prefabs:
- {fileID: 763973163060105107, guid: 1cba2280f61c904438953011bb914c2c, type: 3}
- {fileID: 6759501887051197769, guid: 21cba59c7e14ded47b6d43dec8052b0c, type: 3}
- {fileID: 4482222050759661, guid: c6425bc281e4ddd43817764a4e7988b6, type: 3}
- {fileID: 3448942595357207450, guid: 63914808aa4ff3b4db990d77b29e11f8, type: 3}
- {fileID: 5023089173133301389, guid: ba0b389d44c17b54eb9abb889a6f2cd3, type: 3}
- {fileID: 8275329469098789300, guid: 45bb213d4ed6e1a44918bbc891a0ea9b, type: 3}
- {fileID: 240148579861008588, guid: 8ce84c3150757ea4c8017a959bc97e92, type: 3}
- {fileID: 2989525219562377736, guid: 5a8e66a66c846cd4c84b09703aba1b18, type: 3}
- {fileID: 499987509891949225, guid: 41dd2961b742a3b48b0dff804aec0e73, type: 3}
_SpawnArea: {x: 150, y: 1, z: 5}
fixedDistance: 1
NumOfRep: 1
--- !u!4 &1495349273
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1495349271}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 17.25, y: 0, z: 120}
m_LocalScale: {x: 150, y: 0, z: 7}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1505099284
GameObject:
m_ObjectHideFlags: 0
@ -3701,7 +3758,26 @@ PrefabInstance:
value: Road 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_RemovedGameObjects:
- {fileID: 5536525878796564972, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 3585001788409208952, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 526900982291050728, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 4423980210734556994, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 1190053314816168136, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 4284766708655788246, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 7842680668373889290, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 3432302232684298448, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 680342558343259525, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 380842763473578958, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 7907546108579000446, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 5782041362008768054, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 9159858610349335087, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 2538547396195264541, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 6179378616605127320, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 6826400047221053807, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 4165678520961884547, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 4210171476682669829, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
- {fileID: 4665334727417143869, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 4939760d0f519ec4f8d52cf5575a65c1, type: 3}
@ -6983,7 +7059,26 @@ PrefabInstance:
value: Road 2
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_RemovedGameObjects:
- {fileID: 4725432691319733208, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 7629804252670320053, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 3460822629066004455, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 4381071953729380884, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 8456304797038040742, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 2609716870629577314, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 7190444163196510225, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 7489824583920036313, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 3643776927572875983, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 8046013769880782239, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 2438605180550296447, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 6592642423312826287, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 3817160126803066018, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 6475137987010013261, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 6324925787735059996, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 4981812947315275461, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 2829527280989086350, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 3411244792117960402, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
- {fileID: 981927698538594536, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: d87c071498c41b040a14b829ff279c6f, type: 3}
@ -7059,4 +7154,5 @@ SceneRoots:
- {fileID: 3804171104957673174}
- {fileID: 7332733545551619345}
- {fileID: 5629860619266579138}
- {fileID: 373654115}
- {fileID: 1495349273}
- {fileID: 605799523}

View File

@ -0,0 +1,125 @@
using System.Collections.Generic;
using UnityEngine;
public class SpawnRandomObjectsScript : MonoBehaviour
{
[SerializeField] private List<GameObject> _Prefabs = new List<GameObject>();
[SerializeField] private Vector3 _SpawnArea;
[SerializeField] private float fixedDistance = 1f; // фиксированное расстояние между точками
private float MinX; // минимальная координата X
private float MaxX; // максимальная координата X
private float MinZ; // минимальная координата Z
private float MaxZ; // максимальная координата Z
private float Y;
// кол-во повторных проходов
[SerializeField] private int NumOfRep = 1;
// Структура Point теперь на плоскости X-Z
// Структура Point теперь на плоскости X-Z
public struct Point
{
public Vector3 Position; // позиция точки
public Point(float x, float y, float z)
{
Position = new Vector3(x, y, z); // плоскость 2D, Y-координата всегда 0
}
public float DistanceTo(Point other)
{
return Vector3.Distance(Position, other.Position); // возвращаем расстояние между точками
}
}
private List<Point> points = new List<Point>();
void Start()
{
MinX = -_SpawnArea.x / 2 + transform.position.x;
MaxX = _SpawnArea.x / 2 + transform.position.x;
MinZ = -_SpawnArea.z / 2 + transform.position.z;
MaxZ = _SpawnArea.z / 2 + transform.position.z;
Y = -_SpawnArea.y / 2 + transform.position.y;
GeneratePoints();
foreach (var point in points)
{
GameObject prefab = GetRandomObject<GameObject>(_Prefabs);
// Случайный поворот только по оси Y
Quaternion randomRotation = Quaternion.Euler(
0f, // угол по оси X
Random.Range(0f, 360f), // случайный угол по оси Y
0f // угол по оси Z
);
// Инстанцируем объект с случайным поворотом
Instantiate(prefab, point.Position, randomRotation);
}
}
public void GeneratePoints()
{
// Размещение первой точки случайным образом в указанном диапазоне
points.Add(new Point(Random.Range(MinX, MaxX), Y, Random.Range(MinZ, MaxZ)));
for (int i = 0; i < NumOfRep; i++)
{
bool canAddPoint = true;
while (canAddPoint)
{
canAddPoint = false;
// Пробуем случайно разместить следующую точку в пределах нового диапазона
float newX = Random.Range(MinX, MaxX);
float newZ = Random.Range(MinZ, MaxZ);
Point newPoint = new Point(newX, Y, newZ);
bool valid = true;
foreach (var point in points)
{
if (newPoint.DistanceTo(point) < fixedDistance) // фиксированное расстояние
{
valid = false;
break;
}
}
// Если точка валидна (удовлетворяет условиям), добавляем её
if (valid)
{
points.Add(newPoint);
canAddPoint = true;
}
}
}
}
void OnDrawGizmos()
{
// Устанавливаем цвет Gizmos
Gizmos.color = Color.red;
// Рисуем сферу
Gizmos.DrawWireCube(transform.position, _SpawnArea);
}
T GetRandomObject<T>(List<T> list)
{
// проверка на пустоту списка
if (list == null || list.Count == 0)
{
return default;
}
// Генерация случайного индекса
int randomIndex = UnityEngine.Random.Range(0, list.Count);
return list[randomIndex];
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6961f6e142293184b9a12fe3db1fdede
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: