From 28e164e0974b7e6142796c1ad59b64532c29f53a Mon Sep 17 00:00:00 2001 From: Aryah Kannan <68197305+shamone03@users.noreply.github.com> Date: Sun, 7 Apr 2024 03:42:18 -0300 Subject: [PATCH] progress --- Assets/Prefabs/Black.mat | 133 ++++++++++ Assets/Prefabs/Black.mat.meta | 8 + Assets/Prefabs/Boid.prefab | 13 +- Assets/Prefabs/Cube.prefab | 107 ++++++++ Assets/Prefabs/Cube.prefab.meta | 7 + Assets/Prefabs/Flock.prefab | 79 +++++- Assets/Scenes/Main + BoidTest.unity | 350 +++----------------------- Assets/Scripts/Boid/Boid.cs | 111 ++++---- Assets/Scripts/Boid/Flock.cs | 12 +- Assets/TestScript.cs | 23 ++ Assets/TestScript.cs.meta | 11 + ProjectSettings/DynamicsManager.asset | 9 +- ProjectSettings/TagManager.asset | 1 + 13 files changed, 463 insertions(+), 401 deletions(-) create mode 100644 Assets/Prefabs/Black.mat create mode 100644 Assets/Prefabs/Black.mat.meta create mode 100644 Assets/Prefabs/Cube.prefab create mode 100644 Assets/Prefabs/Cube.prefab.meta create mode 100644 Assets/TestScript.cs create mode 100644 Assets/TestScript.cs.meta diff --git a/Assets/Prefabs/Black.mat b/Assets/Prefabs/Black.mat new file mode 100644 index 0000000..b8d371b --- /dev/null +++ b/Assets/Prefabs/Black.mat @@ -0,0 +1,133 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Black + m_Shader: {fileID: 4800000, guid: 933532a4fcc9baf4fa0491de14d08ed7, type: 3} + m_Parent: {fileID: 0} + m_ModifiedSerializedProperties: 0 + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: + RenderType: Opaque + disabledShaderPasses: [] + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 0, g: 0, b: 0, a: 1} + - _Color: {r: 0, g: 0, b: 0, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] +--- !u!114 &5967082843464698110 +MonoBehaviour: + m_ObjectHideFlags: 11 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 7 diff --git a/Assets/Prefabs/Black.mat.meta b/Assets/Prefabs/Black.mat.meta new file mode 100644 index 0000000..96b8020 --- /dev/null +++ b/Assets/Prefabs/Black.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 063de90125f628047ae25e01e7b07167 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Boid.prefab b/Assets/Prefabs/Boid.prefab index fe78518..2a78288 100644 --- a/Assets/Prefabs/Boid.prefab +++ b/Assets/Prefabs/Boid.prefab @@ -47,13 +47,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: b120b1a3529093246b2faf7d63b89fa4, type: 3} m_Name: m_EditorClassIdentifier: + k__BackingField: 0 k__BackingField: - k__BackingField: 3 - k__BackingField: 2 - k__BackingField: 3 - k__BackingField: 2 + k__BackingField: 1 + k__BackingField: 1 + k__BackingField: 1 + k__BackingField: 1 k__BackingField: 1 - k__BackingField: 10 + k__BackingField: 2 k__BackingField: {fileID: 0} k__BackingField: 0.8 k__BackingField: 0.2 @@ -88,7 +89,7 @@ MeshRenderer: m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + - {fileID: 2100000, guid: 063de90125f628047ae25e01e7b07167, type: 2} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 diff --git a/Assets/Prefabs/Cube.prefab b/Assets/Prefabs/Cube.prefab new file mode 100644 index 0000000..a263d23 --- /dev/null +++ b/Assets/Prefabs/Cube.prefab @@ -0,0 +1,107 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &330998964548404696 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2052421445342782626} + - component: {fileID: 1165976657226917519} + - component: {fileID: 6269440550003556672} + - component: {fileID: 8657512097827845367} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2052421445342782626 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330998964548404696} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 50, y: 30, z: 50} + 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!33 &1165976657226917519 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330998964548404696} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6269440550003556672 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330998964548404696} + 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: 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!65 &8657512097827845367 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330998964548404696} + 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} diff --git a/Assets/Prefabs/Cube.prefab.meta b/Assets/Prefabs/Cube.prefab.meta new file mode 100644 index 0000000..2734803 --- /dev/null +++ b/Assets/Prefabs/Cube.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b32df998d86151342b17148c01f3d454 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Flock.prefab b/Assets/Prefabs/Flock.prefab index 9c00293..6c7fddd 100644 --- a/Assets/Prefabs/Flock.prefab +++ b/Assets/Prefabs/Flock.prefab @@ -10,12 +10,12 @@ GameObject: m_Component: - component: {fileID: 2551754438785502583} - component: {fileID: 5859787279524999016} - m_Layer: 0 + m_Layer: 6 m_Name: Flock m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 + m_StaticEditorFlags: 2147483647 m_IsActive: 1 --- !u!4 &2551754438785502583 Transform: @@ -27,9 +27,10 @@ Transform: serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 80, y: 11, z: 52} - m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} - m_ConstrainProportionsScale: 0 - m_Children: [] + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 3711307615223411332} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &5859787279524999016 @@ -46,7 +47,69 @@ MonoBehaviour: m_EditorClassIdentifier: count: 100 boid: {fileID: 2326342615714041732, guid: 576b68c70ea51904398e856b15eb4752, type: 3} - k__BackingField: {fileID: 0} - avgDistance: 2.22 + avgDistance: 0 boids: [] - target: {x: 0, y: 0, z: 0} + target: {fileID: 0} +--- !u!1 &2582084572455994286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3711307615223411332} + - component: {fileID: 5876059530527395950} + - component: {fileID: 2174578504891917619} + m_Layer: 6 + m_Name: Bounds + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 2147483647 + m_IsActive: 1 +--- !u!4 &3711307615223411332 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2582084572455994286} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 100, y: 60.000004, z: 100} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 2551754438785502583} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5876059530527395950 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2582084572455994286} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!64 &2174578504891917619 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2582084572455994286} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 1 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} diff --git a/Assets/Scenes/Main + BoidTest.unity b/Assets/Scenes/Main + BoidTest.unity index 06eb3c9..ef32253 100644 --- a/Assets/Scenes/Main + BoidTest.unity +++ b/Assets/Scenes/Main + BoidTest.unity @@ -241,69 +241,6 @@ MonoBehaviour: m_LightCookieSize: {x: 1, y: 1} m_LightCookieOffset: {x: 0, y: 0} m_SoftShadowQuality: 0 ---- !u!1 &358932303 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 358932304} - - component: {fileID: 358932307} - - component: {fileID: 358932305} - m_Layer: 0 - m_Name: Plane3 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &358932304 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 358932303} - serializedVersion: 2 - m_LocalRotation: {x: 0.5, y: -0.5, z: 0.5, w: 0.5} - m_LocalPosition: {x: -11.31, y: -20.153309, z: 11.19} - m_LocalScale: {x: 10, y: 0, z: 4} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2026746661} - m_LocalEulerAnglesHint: {x: 90, y: -90, z: 0} ---- !u!64 &358932305 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 358932303} - 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: 5 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &358932307 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 358932303} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &398136589 GameObject: m_ObjectHideFlags: 0 @@ -535,132 +472,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1286497386 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1286497387} - - component: {fileID: 1286497390} - - component: {fileID: 1286497388} - m_Layer: 0 - m_Name: Plane4 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1286497387 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1286497386} - serializedVersion: 2 - m_LocalRotation: {x: -0.5, y: -0.5, z: -0.5, w: 0.5} - m_LocalPosition: {x: -111.36, y: -20.153309, z: 11.06} - m_LocalScale: {x: 10, y: 0, z: 4} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2026746661} - m_LocalEulerAnglesHint: {x: -90, y: -90, z: 0} ---- !u!64 &1286497388 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1286497386} - 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: 5 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1286497390 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1286497386} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!1 &1371278240 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1371278241} - - component: {fileID: 1371278244} - - component: {fileID: 1371278242} - m_Layer: 0 - m_Name: Plane2 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1371278241 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1371278240} - serializedVersion: 2 - m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: -61.32032, y: -20.153309, z: 61.1} - m_LocalScale: {x: 10, y: 0, z: 4} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2026746661} - m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} ---- !u!64 &1371278242 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1371278240} - 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: 5 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1371278244 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1371278240} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &1792397459 GameObject: m_ObjectHideFlags: 0 @@ -739,8 +550,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1792397459} serializedVersion: 2 - m_LocalRotation: {x: -0.09886248, y: 0.70082724, z: -0.10715775, w: -0.69827265} - m_LocalPosition: {x: 162.6, y: 37, z: 47} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 50, y: 30, z: -20} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -923,104 +734,6 @@ MonoBehaviour: m_LightCookieSize: {x: 1, y: 1} m_LightCookieOffset: {x: 0, y: 0} m_SoftShadowQuality: 0 ---- !u!1 &1942026567 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1942026571} - - component: {fileID: 1942026570} - - component: {fileID: 1942026568} - m_Layer: 0 - m_Name: Plane1 - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!64 &1942026568 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1942026567} - 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: 5 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &1942026570 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1942026567} - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &1942026571 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1942026567} - serializedVersion: 2 - m_LocalRotation: {x: 0.7071068, y: -0, z: -0, w: 0.7071068} - m_LocalPosition: {x: -61.32032, y: -20.153309, z: -38.929905} - m_LocalScale: {x: 10, y: 0, z: 4} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 2026746661} - m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} ---- !u!1 &2026746660 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2026746661} - m_Layer: 0 - m_Name: Walls - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2026746661 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2026746660} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 111.32032, y: 40.15331, z: 38.929905} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1942026571} - - {fileID: 1371278241} - - {fileID: 358932304} - - {fileID: 1286497387} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1001 &2496424562565990385 PrefabInstance: m_ObjectHideFlags: 0 @@ -1034,20 +747,50 @@ PrefabInstance: propertyPath: m_Name value: Flock objectReference: {fileID: 0} + - target: {fileID: 1591254644789738669, guid: 87303166ee03ffd48ab65547d5cbec3a, + type: 3} + propertyPath: m_IsActive + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2174578504891917619, guid: 87303166ee03ffd48ab65547d5cbec3a, + type: 3} + propertyPath: m_Convex + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 2174578504891917619, guid: 87303166ee03ffd48ab65547d5cbec3a, + type: 3} + propertyPath: m_IsTrigger + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2551754438785502583, guid: 87303166ee03ffd48ab65547d5cbec3a, + type: 3} + propertyPath: m_LocalScale.x + value: 0.35 + objectReference: {fileID: 0} + - target: {fileID: 2551754438785502583, guid: 87303166ee03ffd48ab65547d5cbec3a, + type: 3} + propertyPath: m_LocalScale.y + value: 0.35 + objectReference: {fileID: 0} + - target: {fileID: 2551754438785502583, guid: 87303166ee03ffd48ab65547d5cbec3a, + type: 3} + propertyPath: m_LocalScale.z + value: 0.35 + objectReference: {fileID: 0} - target: {fileID: 2551754438785502583, guid: 87303166ee03ffd48ab65547d5cbec3a, type: 3} propertyPath: m_LocalPosition.x - value: 80 + value: 50 objectReference: {fileID: 0} - target: {fileID: 2551754438785502583, guid: 87303166ee03ffd48ab65547d5cbec3a, type: 3} propertyPath: m_LocalPosition.y - value: 11 + value: 30 objectReference: {fileID: 0} - target: {fileID: 2551754438785502583, guid: 87303166ee03ffd48ab65547d5cbec3a, type: 3} propertyPath: m_LocalPosition.z - value: 52 + value: 50 objectReference: {fileID: 0} - target: {fileID: 2551754438785502583, guid: 87303166ee03ffd48ab65547d5cbec3a, type: 3} @@ -1086,29 +829,15 @@ PrefabInstance: objectReference: {fileID: 0} - target: {fileID: 5859787279524999016, guid: 87303166ee03ffd48ab65547d5cbec3a, type: 3} - propertyPath: target + propertyPath: test value: - objectReference: {fileID: 945930642} - - target: {fileID: 5859787279524999016, guid: 87303166ee03ffd48ab65547d5cbec3a, + objectReference: {fileID: 2052421445342782626, guid: b32df998d86151342b17148c01f3d454, type: 3} - propertyPath: target.x - value: 51.1 - objectReference: {fileID: 0} - target: {fileID: 5859787279524999016, guid: 87303166ee03ffd48ab65547d5cbec3a, type: 3} - propertyPath: target.y - value: 20.25 - objectReference: {fileID: 0} - - target: {fileID: 5859787279524999016, guid: 87303166ee03ffd48ab65547d5cbec3a, - type: 3} - propertyPath: target.z - value: 44.51 - objectReference: {fileID: 0} - - target: {fileID: 5859787279524999016, guid: 87303166ee03ffd48ab65547d5cbec3a, - type: 3} - propertyPath: k__BackingField + propertyPath: target value: - objectReference: {fileID: 2026746660} + objectReference: {fileID: 945930642} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -1123,6 +852,5 @@ SceneRoots: - {fileID: 92869758} - {fileID: 491750420} - {fileID: 1792397462} - - {fileID: 2026746661} - {fileID: 945930642} - {fileID: 398136590} diff --git a/Assets/Scripts/Boid/Boid.cs b/Assets/Scripts/Boid/Boid.cs index 6bb8b89..12c722b 100644 --- a/Assets/Scripts/Boid/Boid.cs +++ b/Assets/Scripts/Boid/Boid.cs @@ -16,20 +16,21 @@ public struct Multipliers { } public class Boid : MonoBehaviour { + [field: SerializeField] public int ID { private get; set; } [field: SerializeField] public Multipliers Multipliers { private get; set; } [field: SerializeField] public float Speed { private get; set; } [field: SerializeField] public Transform Flock { private get; set; } private INeighbours _neighbours; + private Vector3 _avoidance; [field: SerializeField] public float Cognitive { get; set; } = .8f; [field: SerializeField] public float Social { get; set; } = .2f; [field: SerializeField] public Transform Target { private get; set; } private Vector3 PersonalBest { get; set; } - private Vector3 _avoidance; private Vector3 GlobalBest { get { - var neighbors = _neighbours.Get(); + var neighbors = _neighbours.Get(transform.position, perception); return neighbors.Aggregate(neighbors.First(), (min, boid) => Vector3.Distance(min.PersonalBest, Target.position) < Vector3.Distance(boid.PersonalBest, Target.position) @@ -39,62 +40,33 @@ private Vector3 GlobalBest { } } - private Transform _worldBounds; - private float _worldBoundsXMax; - private float _worldBoundsXMin; - private float _worldBoundsZMax; - private float _worldBoundsZMin; - private float _worldBoundsYMax; - [SerializeField] private float perception; [field: SerializeField] public Vector3 Velocity { get; private set; } - + + private Bounds _bounds; private void Start() { + Physics.queriesHitBackfaces = true; // needed for raycasts to hit the inside of colliders // Multipliers = new Multipliers { Alignment = 1, Separation = 1, Cohesion = 1 }; - - // Get the boundary around terrain and set the bound - _worldBounds = Flock.GetComponent().Bound.transform; - foreach (Transform plane in _worldBounds) - { - // Get Max and Min in X Axis - if (plane.position.x > _worldBoundsXMax) - { - _worldBoundsXMax = plane.transform.position.x; - } - else if (plane.position.x < _worldBoundsXMin) - { - _worldBoundsXMin = plane.transform.position.x; - } - - // Get Max and Min in Z Axis - if (plane.transform.position.z > _worldBoundsZMax) - { - _worldBoundsZMax = plane.transform.position.z; - } - else if (plane.position.z < _worldBoundsZMin) - { - _worldBoundsZMin = plane.transform.position.z; - } - } - - // Ceiling - _worldBoundsYMax = 40; - - float randomX = Random.Range(_worldBoundsXMin, _worldBoundsXMax); - float randomY = Random.Range(0, _worldBoundsYMax); - float randomZ = Random.Range(_worldBoundsZMin, _worldBoundsZMax); - - Velocity = new Vector3(randomX, randomY, randomZ); + name = $"Boid {ID}"; + Velocity = Random.insideUnitSphere * Speed; _neighbours = Flock.GetComponent(); + _bounds = Flock.GetComponent().Bounds; PersonalBest = transform.position; } + private void OnDrawGizmos() { + // Gizmos.color = Color.black; + // Gizmos.DrawWireSphere(transform.position, perception); + Gizmos.color = Color.red; + Gizmos.DrawLine(transform.position, transform.position + Velocity.normalized * 2); + } + private void Update() { Velocity += GetAcceleration(_neighbours.Get(transform.position, perception)); - Velocity = Vector3.ClampMagnitude(Velocity, Speed); + Velocity = Velocity.normalized * Speed; transform.position += Velocity * Time.deltaTime; if (Vector3.Distance(transform.position, Target.position) < Vector3.Distance(PersonalBest, Target.position)) { @@ -105,18 +77,21 @@ private void Update() { } private Vector3 GetAcceleration(List neighbours) { - return Separation(neighbours) * Multipliers.Separation + - Alignment(neighbours) * Multipliers.Alignment + - Cohesion(neighbours) * Multipliers.Cohesion + - Pathfinding() * Multipliers.Pathfinding + - _avoidance * Multipliers.Avoidance; + return Separation(neighbours) * Multipliers.Separation + + Alignment(neighbours) * Multipliers.Alignment + + Cohesion(neighbours) * Multipliers.Cohesion + + Pathfinding() * 0; + // _avoidance * Multipliers.Avoidance; } private void FixedUpdate() { _avoidance = Vector3.zero; - if (Physics.Raycast(new Ray(transform.position, Velocity.normalized), out var hit, perception, ~LayerMask.NameToLayer("Terrain"))) { - _avoidance = hit.normal; + if (Physics.Raycast(new Ray(transform.position, Velocity.normalized), out var hit, perception, LayerMask.NameToLayer("Terrain"))) { + Debug.Log($"{name} boutta hit"); + _avoidance = ((hit.normal + Velocity) / 2).normalized * Speed; } + + _avoidance = Vector3.ClampMagnitude(_avoidance, .2f); } private Vector3 Pathfinding() { @@ -126,8 +101,8 @@ private Vector3 Pathfinding() { var pathfinding = personal + global; pathfinding -= Velocity; - pathfinding = pathfinding.normalized * Speed; - pathfinding = Vector3.ClampMagnitude(pathfinding, .2f); + // pathfinding = pathfinding.normalized * Speed; + // pathfinding = Vector3.ClampMagnitude(pathfinding, .33f); return pathfinding; } @@ -145,7 +120,7 @@ private Vector3 Alignment(List neighbours) { alignment /= neighbours.Count - 1; alignment = alignment.normalized * Speed; alignment -= Velocity; - alignment = Vector3.ClampMagnitude(alignment, .2f); + alignment = Vector3.ClampMagnitude(alignment, .33f); } return alignment; } @@ -159,10 +134,10 @@ private Vector3 Cohesion(List neighbours) { } if (neighbours.Count - 1 > 0) { cohesion /= neighbours.Count - 1; - cohesion -= transform.position; + cohesion = cohesion - transform.position; cohesion = cohesion.normalized * Speed; cohesion -= Velocity; - cohesion = Vector3.ClampMagnitude(cohesion, .2f); + cohesion = Vector3.ClampMagnitude(cohesion, .33f); } return cohesion; } @@ -171,29 +146,29 @@ private Vector3 Separation(List neighbours) { var separation = Vector3.zero; foreach (var boid in neighbours) { if (this != boid) { - var offset = transform.position - boid.transform.position; - separation += offset / offset.sqrMagnitude; + // var offset = transform.position - boid.transform.position; + // separation += offset / offset.sqrMagnitude; + separation += boid.transform.position; } } if (neighbours.Count - 1 > 0) { separation /= neighbours.Count - 1; + separation = transform.position - separation; separation = separation.normalized * Speed; separation -= Velocity; - separation = Vector3.ClampMagnitude(separation, .2f); + separation = Vector3.ClampMagnitude(separation, .33f); } return separation; } - - private void Bounds() { - if (transform.position.x > _worldBoundsXMax) transform.position = new Vector3(_worldBoundsXMin, transform.position.y, transform.position.z); - if (transform.position.x < _worldBoundsXMin) transform.position = new Vector3(_worldBoundsXMax, transform.position.y, transform.position.z); - if (transform.position.y > _worldBoundsYMax) transform.position = new Vector3(transform.position.x, 0, transform.position.z); - if (transform.position.y < 0) transform.position = new Vector3(transform.position.x, _worldBoundsYMax, transform.position.z); - if (transform.position.z > _worldBoundsZMax) transform.position = new Vector3(transform.position.x, transform.position.y, _worldBoundsZMin); - if (transform.position.z < _worldBoundsZMin) transform.position = new Vector3(transform.position.x, transform.position.y, _worldBoundsZMax); + if (transform.position.x < _bounds.min.x) transform.position = new Vector3(_bounds.max.x, transform.position.y, transform.position.z); + if (transform.position.x > _bounds.max.x) transform.position = new Vector3(_bounds.min.x, transform.position.y, transform.position.z); + if (transform.position.y < _bounds.min.y) transform.position = new Vector3(transform.position.x, _bounds.max.y, transform.position.z); + if (transform.position.y > _bounds.max.y) transform.position = new Vector3(transform.position.x, _bounds.min.y, transform.position.z); + if (transform.position.z < _bounds.min.z) transform.position = new Vector3(transform.position.x, transform.position.y, _bounds.max.z); + if (transform.position.z > _bounds.max.z) transform.position = new Vector3(transform.position.x, transform.position.y, _bounds.min.z); } } } \ No newline at end of file diff --git a/Assets/Scripts/Boid/Flock.cs b/Assets/Scripts/Boid/Flock.cs index 8bb9bac..4ed3eed 100644 --- a/Assets/Scripts/Boid/Flock.cs +++ b/Assets/Scripts/Boid/Flock.cs @@ -1,27 +1,29 @@ -using System; using System.Collections.Generic; using System.Linq; using Interfaces; using UnityEngine; -using UnityEngine.Serialization; using Random = UnityEngine.Random; namespace Boid { public class Flock : MonoBehaviour, INeighbours { [SerializeField] private int count; [SerializeField] private GameObject boid; - [field: SerializeField] public GameObject Bound { get; set; } [SerializeField] private float avgDistance; [SerializeField] private List boids; [SerializeField] private Transform target; - + [SerializeField] private Transform test; + public Bounds Bounds => GetComponentInChildren().bounds; + private void Start() { + Instantiate(test, Bounds.min, Quaternion.identity); + Instantiate(test, Bounds.max, Quaternion.identity); foreach (var i in Enumerable.Range(0, count)) { - var instance = Instantiate(boid, Random.insideUnitSphere * 50, Quaternion.identity); + var instance = Instantiate(boid, transform.position + Random.insideUnitSphere * 3, Quaternion.identity); instance.GetComponent().Flock = transform; instance.GetComponent().Target = target; + instance.GetComponent().ID = i + 1; boids.Add(instance.GetComponent()); } } diff --git a/Assets/TestScript.cs b/Assets/TestScript.cs new file mode 100644 index 0000000..4a34cf6 --- /dev/null +++ b/Assets/TestScript.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class TestScript : MonoBehaviour { + private void Start() { + Physics.queriesHitBackfaces = true; + // Vector3 test = new Vector3(5, 4, 2); + transform.position = Vector3.Scale(transform.position, new Vector3(-1, 1, 1)); + Debug.Log(transform.position); + } + + private void FixedUpdate() { + // Debug.DrawLine(transform.position, transform.position + transform.up * 500); + // if (Physics.Raycast(transform.position, transform.up * 500, float.PositiveInfinity)) { + // Debug.Log("hitting"); + // } + // else { + // Debug.Log("not hittin"); + // } + } +} \ No newline at end of file diff --git a/Assets/TestScript.cs.meta b/Assets/TestScript.cs.meta new file mode 100644 index 0000000..61d4fd0 --- /dev/null +++ b/Assets/TestScript.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f34ed7147598f274f8e6b4891181299e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/DynamicsManager.asset b/ProjectSettings/DynamicsManager.asset index 1596c42..572a67a 100644 --- a/ProjectSettings/DynamicsManager.asset +++ b/ProjectSettings/DynamicsManager.asset @@ -3,24 +3,26 @@ --- !u!55 &1 PhysicsManager: m_ObjectHideFlags: 0 - serializedVersion: 13 + serializedVersion: 14 m_Gravity: {x: 0, y: -9.81, z: 0} m_DefaultMaterial: {fileID: 0} m_BounceThreshold: 2 + m_DefaultMaxDepenetrationVelocity: 10 m_SleepThreshold: 0.005 m_DefaultContactOffset: 0.01 m_DefaultSolverIterations: 6 m_DefaultSolverVelocityIterations: 1 - m_QueriesHitBackfaces: 0 + m_QueriesHitBackfaces: 1 m_QueriesHitTriggers: 1 m_EnableAdaptiveForce: 0 m_ClothInterCollisionDistance: 0.1 m_ClothInterCollisionStiffness: 0.2 m_ContactsGeneration: 1 m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff - m_AutoSimulation: 1 + m_SimulationMode: 0 m_AutoSyncTransforms: 0 m_ReuseCollisionCallbacks: 0 + m_InvokeCollisionCallbacks: 1 m_ClothInterCollisionSettingsToggle: 0 m_ClothGravity: {x: 0, y: -9.81, z: 0} m_ContactPairsMode: 0 @@ -32,5 +34,6 @@ PhysicsManager: m_FrictionType: 0 m_EnableEnhancedDeterminism: 0 m_EnableUnifiedHeightmaps: 1 + m_ImprovedPatchFriction: 0 m_SolverType: 0 m_DefaultMaxAngularSpeed: 50 diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 8058be7..cfee098 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -5,6 +5,7 @@ TagManager: serializedVersion: 2 tags: - boid + - WorldBounds layers: - Default - TransparentFX