parent
2ff87e9e15
commit
82ad671bf2
10 changed files with 793 additions and 1 deletions
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: b9a186e998591ef46a976b06d5973e32 |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
||||||
@ -0,0 +1,264 @@ |
|||||||
|
using System.Collections.Generic; |
||||||
|
using UnityEngine; |
||||||
|
|
||||||
|
/// <summary> |
||||||
|
/// Simulates a single lane of traffic by recycling a fixed pool of vehicle GameObjects. |
||||||
|
/// Vehicles travel along local +Z, with organic lateral drift driven by Perlin noise. |
||||||
|
/// |
||||||
|
/// Usage: |
||||||
|
/// 1. Place this component on an empty GameObject aligned with the road lane. |
||||||
|
/// 2. Assign vehicle prefabs, tune speed and drift. |
||||||
|
/// 3. Duplicate and mirror-X for the opposite lane. |
||||||
|
/// </summary> |
||||||
|
public class TrafficLane : MonoBehaviour |
||||||
|
{ |
||||||
|
// ── Route ───────────────────────────────────────────────────────────────── |
||||||
|
|
||||||
|
[Header("Route")] |
||||||
|
[Tooltip("Length of the lane in local +Z units. Vehicles are recycled at the far end.")] |
||||||
|
public float routeLength = 80f; |
||||||
|
|
||||||
|
[Tooltip("Local X position of the lane centre.")] |
||||||
|
public float laneCenter = 0f; |
||||||
|
|
||||||
|
// ── Vehicle Pool ────────────────────────────────────────────────────────── |
||||||
|
|
||||||
|
[Header("Vehicle Pool")] |
||||||
|
[Tooltip("Prefabs to randomly draw from when spawning. Can contain different vehicle types.")] |
||||||
|
public GameObject[] vehiclePrefabs; |
||||||
|
|
||||||
|
[Tooltip("Total number of vehicle instances kept alive at once.")] |
||||||
|
[Range(1, 60)] |
||||||
|
public int poolSize = 12; |
||||||
|
|
||||||
|
// ── Speed ───────────────────────────────────────────────────────────────── |
||||||
|
|
||||||
|
[Header("Speed")] |
||||||
|
[Tooltip("Average forward speed in units / second.")] |
||||||
|
public float baseSpeed = 6f; |
||||||
|
|
||||||
|
[Tooltip("Per-vehicle speed spread as a fraction of baseSpeed (±).")] |
||||||
|
[Range(0f, 0.5f)] |
||||||
|
public float speedVariance = 0.2f; |
||||||
|
|
||||||
|
// ── Spawn ───────────────────────────────────────────────────────────────── |
||||||
|
|
||||||
|
[Header("Spawn")] |
||||||
|
[Tooltip("Average seconds between consecutive spawns.")] |
||||||
|
public float spawnInterval = 2.5f; |
||||||
|
|
||||||
|
[Tooltip("Randomisation of spawn interval as a fraction (±).")] |
||||||
|
[Range(0f, 0.9f)] |
||||||
|
public float spawnIntervalVariance = 0.4f; |
||||||
|
|
||||||
|
[Tooltip("Minimum clearance required at Z=0 before the next vehicle may enter.")] |
||||||
|
public float minSpawnGap = 4f; |
||||||
|
|
||||||
|
// ── Lateral Drift ───────────────────────────────────────────────────────── |
||||||
|
|
||||||
|
[Header("Lateral Drift")] |
||||||
|
[Tooltip("Maximum left / right deviation from lane centre (units).")] |
||||||
|
public float driftAmplitude = 0.25f; |
||||||
|
|
||||||
|
[Tooltip("Spatial frequency of the drift wave — lower = longer, lazier curves.")] |
||||||
|
[Range(0.01f, 1f)] |
||||||
|
public float driftFrequency = 0.08f; |
||||||
|
|
||||||
|
// ── Private state ───────────────────────────────────────────────────────── |
||||||
|
|
||||||
|
private class Agent |
||||||
|
{ |
||||||
|
public GameObject go; |
||||||
|
public float progress; // distance travelled along Z this trip |
||||||
|
public float speed; // units / second for this trip |
||||||
|
public float noiseRow; // unique Y coordinate in Perlin space for this trip |
||||||
|
public bool active; |
||||||
|
} |
||||||
|
|
||||||
|
private readonly List<Agent> pool = new(); |
||||||
|
private float spawnTimer; |
||||||
|
private float nextSpawnDelay; |
||||||
|
|
||||||
|
// ── Lifecycle ───────────────────────────────────────────────────────────── |
||||||
|
|
||||||
|
private void Start() |
||||||
|
{ |
||||||
|
if (vehiclePrefabs == null || vehiclePrefabs.Length == 0) |
||||||
|
{ |
||||||
|
Debug.LogWarning("[TrafficLane] No vehicle prefabs assigned.", this); |
||||||
|
enabled = false; |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
BuildPool(); |
||||||
|
ScheduleNextSpawn(); |
||||||
|
|
||||||
|
// Scatter a few vehicles along the lane so it doesn't look empty at start. |
||||||
|
PrewarmLane(); |
||||||
|
} |
||||||
|
|
||||||
|
private void Update() |
||||||
|
{ |
||||||
|
TickAgents(); |
||||||
|
TickSpawn(); |
||||||
|
} |
||||||
|
|
||||||
|
// ── Pool construction ───────────────────────────────────────────────────── |
||||||
|
|
||||||
|
private void BuildPool() |
||||||
|
{ |
||||||
|
for (var i = 0; i < poolSize; i++) |
||||||
|
{ |
||||||
|
var prefab = vehiclePrefabs[Random.Range(0, vehiclePrefabs.Length)]; |
||||||
|
var go = Instantiate(prefab, transform); |
||||||
|
go.SetActive(false); |
||||||
|
pool.Add(new Agent { go = go, noiseRow = Random.Range(0f, 100f) }); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void PrewarmLane() |
||||||
|
{ |
||||||
|
// Spread inactive vehicles evenly so the lane looks populated from frame 1. |
||||||
|
var step = routeLength / Mathf.Max(poolSize * 0.5f, 1f); |
||||||
|
var z = Random.Range(0f, step); |
||||||
|
foreach (var agent in pool) |
||||||
|
{ |
||||||
|
if (z >= routeLength) |
||||||
|
{ |
||||||
|
break; |
||||||
|
} |
||||||
|
Activate(agent, z); |
||||||
|
z += step * Random.Range(0.7f, 1.3f); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// ── Per-frame tick ──────────────────────────────────────────────────────── |
||||||
|
|
||||||
|
private void TickAgents() |
||||||
|
{ |
||||||
|
foreach (var agent in pool) |
||||||
|
{ |
||||||
|
if (!agent.active) |
||||||
|
{ |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
agent.progress += agent.speed * Time.deltaTime; |
||||||
|
|
||||||
|
if (agent.progress >= routeLength) |
||||||
|
{ |
||||||
|
Deactivate(agent); |
||||||
|
continue; |
||||||
|
} |
||||||
|
|
||||||
|
// Perlin noise: x-axis = position along route, y-axis = per-agent seed. |
||||||
|
var noise = Mathf.PerlinNoise(agent.progress * driftFrequency, agent.noiseRow); |
||||||
|
var lateral = laneCenter + (noise * 2f - 1f) * driftAmplitude; |
||||||
|
|
||||||
|
var prev = agent.go.transform.localPosition; |
||||||
|
var next = new Vector3(lateral, 0f, agent.progress); |
||||||
|
agent.go.transform.localPosition = next; |
||||||
|
|
||||||
|
// Face direction of travel, ignoring tiny sub-frame deltas. |
||||||
|
var delta = next - prev; |
||||||
|
if (delta.sqrMagnitude > 1e-6f) |
||||||
|
{ |
||||||
|
agent.go.transform.localRotation = Quaternion.LookRotation(delta, Vector3.up); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
private void TickSpawn() |
||||||
|
{ |
||||||
|
spawnTimer += Time.deltaTime; |
||||||
|
if (spawnTimer < nextSpawnDelay) |
||||||
|
{ |
||||||
|
return; |
||||||
|
} |
||||||
|
|
||||||
|
spawnTimer = 0f; |
||||||
|
ScheduleNextSpawn(); |
||||||
|
|
||||||
|
// Block spawn if another vehicle is still near the entry point. |
||||||
|
foreach (var agent in pool) |
||||||
|
{ |
||||||
|
if (agent.active && agent.progress < minSpawnGap) |
||||||
|
{ |
||||||
|
return; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
SpawnNext(0f); |
||||||
|
} |
||||||
|
|
||||||
|
// ── Helpers ─────────────────────────────────────────────────────────────── |
||||||
|
|
||||||
|
private void Activate(Agent agent, float startProgress) |
||||||
|
{ |
||||||
|
agent.progress = startProgress; |
||||||
|
agent.speed = baseSpeed * (1f + Random.Range(-speedVariance, speedVariance)); |
||||||
|
agent.noiseRow = Random.Range(0f, 100f); |
||||||
|
agent.go.SetActive(true); |
||||||
|
agent.active = true; |
||||||
|
|
||||||
|
// Teleport silently to start position before enabling. |
||||||
|
var noise = Mathf.PerlinNoise(startProgress * driftFrequency, agent.noiseRow); |
||||||
|
var lateral = laneCenter + (noise * 2f - 1f) * driftAmplitude; |
||||||
|
agent.go.transform.localPosition = new Vector3(lateral, 0f, startProgress); |
||||||
|
} |
||||||
|
|
||||||
|
private void SpawnNext(float startProgress) |
||||||
|
{ |
||||||
|
foreach (var agent in pool) |
||||||
|
{ |
||||||
|
if (!agent.active) |
||||||
|
{ |
||||||
|
Activate(agent, startProgress); |
||||||
|
return; |
||||||
|
} |
||||||
|
} |
||||||
|
// Pool exhausted — skip this cycle. |
||||||
|
} |
||||||
|
|
||||||
|
private static void Deactivate(Agent agent) |
||||||
|
{ |
||||||
|
agent.go.SetActive(false); |
||||||
|
agent.active = false; |
||||||
|
} |
||||||
|
|
||||||
|
private void ScheduleNextSpawn() |
||||||
|
{ |
||||||
|
var variance = spawnInterval * spawnIntervalVariance; |
||||||
|
nextSpawnDelay = Mathf.Max(0.1f, spawnInterval + Random.Range(-variance, variance)); |
||||||
|
} |
||||||
|
|
||||||
|
// ── Editor visualisation ────────────────────────────────────────────────── |
||||||
|
|
||||||
|
#if UNITY_EDITOR |
||||||
|
private void OnDrawGizmosSelected() |
||||||
|
{ |
||||||
|
var start = transform.TransformPoint(new Vector3(laneCenter, 0f, 0f)); |
||||||
|
var end = transform.TransformPoint(new Vector3(laneCenter, 0f, routeLength)); |
||||||
|
|
||||||
|
Gizmos.color = Color.yellow; |
||||||
|
Gizmos.DrawLine(start, end); |
||||||
|
|
||||||
|
// Drift envelope. |
||||||
|
Gizmos.color = new Color(1f, 1f, 0f, 0.25f); |
||||||
|
var left = transform.TransformPoint(new Vector3(laneCenter - driftAmplitude, 0f, 0f)); |
||||||
|
var right = transform.TransformPoint(new Vector3(laneCenter + driftAmplitude, 0f, 0f)); |
||||||
|
var leftEnd = transform.TransformPoint(new Vector3(laneCenter - driftAmplitude, 0f, routeLength)); |
||||||
|
var rightEnd = transform.TransformPoint(new Vector3(laneCenter + driftAmplitude, 0f, routeLength)); |
||||||
|
Gizmos.DrawLine(left, leftEnd); |
||||||
|
Gizmos.DrawLine(right, rightEnd); |
||||||
|
Gizmos.DrawLine(left, right); |
||||||
|
Gizmos.DrawLine(leftEnd, rightEnd); |
||||||
|
|
||||||
|
// Entry / exit markers. |
||||||
|
Gizmos.color = Color.green; |
||||||
|
Gizmos.DrawSphere(start, 0.3f); |
||||||
|
Gizmos.color = Color.red; |
||||||
|
Gizmos.DrawSphere(end, 0.3f); |
||||||
|
} |
||||||
|
#endif |
||||||
|
} |
||||||
@ -0,0 +1,2 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: b9bb25da9b61d4849b3c17eff30adbf8 |
||||||
@ -0,0 +1,146 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!1 &1557020077158108179 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 8678393413767825165} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Skoda Kamiq |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!4 &8678393413767825165 |
||||||
|
Transform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 1557020077158108179} |
||||||
|
serializedVersion: 2 |
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_ConstrainProportionsScale: 0 |
||||||
|
m_Children: |
||||||
|
- {fileID: 5897071126227124009} |
||||||
|
m_Father: {fileID: 0} |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
--- !u!1 &2325977463038497186 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 5897071126227124009} |
||||||
|
- component: {fileID: 7052644008610836356} |
||||||
|
- component: {fileID: 1832160163738719301} |
||||||
|
- component: {fileID: 5942392679462043245} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Dummy |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!4 &5897071126227124009 |
||||||
|
Transform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 2325977463038497186} |
||||||
|
serializedVersion: 2 |
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0.077, z: 0} |
||||||
|
m_LocalScale: {x: 0.1793, y: 0.154, z: 0.4241} |
||||||
|
m_ConstrainProportionsScale: 0 |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 8678393413767825165} |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
--- !u!33 &7052644008610836356 |
||||||
|
MeshFilter: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 2325977463038497186} |
||||||
|
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
||||||
|
--- !u!23 &1832160163738719301 |
||||||
|
MeshRenderer: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 2325977463038497186} |
||||||
|
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_RayTracingAccelStructBuildFlagsOverride: 0 |
||||||
|
m_RayTracingAccelStructBuildFlags: 1 |
||||||
|
m_SmallMeshCulling: 1 |
||||||
|
m_ForceMeshLod: -1 |
||||||
|
m_MeshLodSelectionBias: 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_GlobalIlluminationMeshLod: 0 |
||||||
|
m_SortingLayerID: 0 |
||||||
|
m_SortingLayer: 0 |
||||||
|
m_SortingOrder: 0 |
||||||
|
m_MaskInteraction: 0 |
||||||
|
m_AdditionalVertexStreams: {fileID: 0} |
||||||
|
--- !u!65 &5942392679462043245 |
||||||
|
BoxCollider: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 2325977463038497186} |
||||||
|
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} |
||||||
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 7893264379c7b27449c0d5cd800de112 |
||||||
|
PrefabImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
||||||
@ -0,0 +1,146 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!1 &2909664378286430652 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 8179583403278623410} |
||||||
|
- component: {fileID: 4213176841392790473} |
||||||
|
- component: {fileID: 2544296818586992976} |
||||||
|
- component: {fileID: 1169592420900285185} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Dummy |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!4 &8179583403278623410 |
||||||
|
Transform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 2909664378286430652} |
||||||
|
serializedVersion: 2 |
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0.0812, z: 0} |
||||||
|
m_LocalScale: {x: 0.192, y: 0.1624, z: 0.479} |
||||||
|
m_ConstrainProportionsScale: 0 |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 8656289922454706414} |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
--- !u!33 &4213176841392790473 |
||||||
|
MeshFilter: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 2909664378286430652} |
||||||
|
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
||||||
|
--- !u!23 &2544296818586992976 |
||||||
|
MeshRenderer: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 2909664378286430652} |
||||||
|
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_RayTracingAccelStructBuildFlagsOverride: 0 |
||||||
|
m_RayTracingAccelStructBuildFlags: 1 |
||||||
|
m_SmallMeshCulling: 1 |
||||||
|
m_ForceMeshLod: -1 |
||||||
|
m_MeshLodSelectionBias: 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_GlobalIlluminationMeshLod: 0 |
||||||
|
m_SortingLayerID: 0 |
||||||
|
m_SortingLayer: 0 |
||||||
|
m_SortingOrder: 0 |
||||||
|
m_MaskInteraction: 0 |
||||||
|
m_AdditionalVertexStreams: {fileID: 0} |
||||||
|
--- !u!65 &1169592420900285185 |
||||||
|
BoxCollider: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 2909664378286430652} |
||||||
|
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!1 &6059035821173914762 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 8656289922454706414} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Tesla Model Y |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!4 &8656289922454706414 |
||||||
|
Transform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 6059035821173914762} |
||||||
|
serializedVersion: 2 |
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_ConstrainProportionsScale: 0 |
||||||
|
m_Children: |
||||||
|
- {fileID: 8179583403278623410} |
||||||
|
m_Father: {fileID: 0} |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: bf52a0f6f1d4ca94abedb85fa135a7cd |
||||||
|
PrefabImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
||||||
@ -0,0 +1,146 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!1 &369911992068276538 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 3817041185149164022} |
||||||
|
- component: {fileID: 7596283371511926204} |
||||||
|
- component: {fileID: 3959783925517860865} |
||||||
|
- component: {fileID: 2975129725945164033} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Dummy |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!4 &3817041185149164022 |
||||||
|
Transform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 369911992068276538} |
||||||
|
serializedVersion: 2 |
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0.07175, z: 0} |
||||||
|
m_LocalScale: {x: 0.178, y: 0.1435, z: 0.463} |
||||||
|
m_ConstrainProportionsScale: 0 |
||||||
|
m_Children: [] |
||||||
|
m_Father: {fileID: 657832765405581052} |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
|
--- !u!33 &7596283371511926204 |
||||||
|
MeshFilter: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 369911992068276538} |
||||||
|
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} |
||||||
|
--- !u!23 &3959783925517860865 |
||||||
|
MeshRenderer: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 369911992068276538} |
||||||
|
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_RayTracingAccelStructBuildFlagsOverride: 0 |
||||||
|
m_RayTracingAccelStructBuildFlags: 1 |
||||||
|
m_SmallMeshCulling: 1 |
||||||
|
m_ForceMeshLod: -1 |
||||||
|
m_MeshLodSelectionBias: 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_GlobalIlluminationMeshLod: 0 |
||||||
|
m_SortingLayerID: 0 |
||||||
|
m_SortingLayer: 0 |
||||||
|
m_SortingOrder: 0 |
||||||
|
m_MaskInteraction: 0 |
||||||
|
m_AdditionalVertexStreams: {fileID: 0} |
||||||
|
--- !u!65 &2975129725945164033 |
||||||
|
BoxCollider: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 369911992068276538} |
||||||
|
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!1 &7937761055385602081 |
||||||
|
GameObject: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
serializedVersion: 6 |
||||||
|
m_Component: |
||||||
|
- component: {fileID: 657832765405581052} |
||||||
|
m_Layer: 0 |
||||||
|
m_Name: Toyota Altis |
||||||
|
m_TagString: Untagged |
||||||
|
m_Icon: {fileID: 0} |
||||||
|
m_NavMeshLayer: 0 |
||||||
|
m_StaticEditorFlags: 0 |
||||||
|
m_IsActive: 1 |
||||||
|
--- !u!4 &657832765405581052 |
||||||
|
Transform: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 7937761055385602081} |
||||||
|
serializedVersion: 2 |
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} |
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0} |
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1} |
||||||
|
m_ConstrainProportionsScale: 0 |
||||||
|
m_Children: |
||||||
|
- {fileID: 3817041185149164022} |
||||||
|
m_Father: {fileID: 0} |
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} |
||||||
@ -0,0 +1,7 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 692d27357d450044883464a7dc84418a |
||||||
|
PrefabImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
||||||
Loading…
Reference in new issue