From 2db3e27a47047c0a3dcdd0d0adb90adb97d06245 Mon Sep 17 00:00:00 2001 From: Antoine H Date: Wed, 30 Dec 2020 20:09:20 +0100 Subject: [PATCH] First client navigation --- Assets/Resources/Clients/Oldman.prefab | 25 +- Assets/Scenes/Tests/SampleScene.meta | 8 + Assets/Scenes/Tests/SampleScene.unity | 383 +++++++++++++++++- .../Tests/SampleScene/NavMesh-NavMesh.asset | Bin 0 -> 16968 bytes .../SampleScene/NavMesh-NavMesh.asset.meta | 8 + Assets/Scripts/Client_controller.cs | 21 + Assets/Scripts/GameSystems/ClientManager.cs | 48 ++- Packages/manifest.json | 1 + Packages/packages-lock.json | 7 + ProjectSettings/NavMeshAreas.asset | 4 +- 10 files changed, 493 insertions(+), 12 deletions(-) create mode 100644 Assets/Scenes/Tests/SampleScene.meta create mode 100644 Assets/Scenes/Tests/SampleScene/NavMesh-NavMesh.asset create mode 100644 Assets/Scenes/Tests/SampleScene/NavMesh-NavMesh.asset.meta diff --git a/Assets/Resources/Clients/Oldman.prefab b/Assets/Resources/Clients/Oldman.prefab index 8eb9650..0cf0b95 100644 --- a/Assets/Resources/Clients/Oldman.prefab +++ b/Assets/Resources/Clients/Oldman.prefab @@ -13,6 +13,7 @@ GameObject: - component: {fileID: 5304524770463492229} - component: {fileID: 5304524770463492234} - component: {fileID: 5304524770463492233} + - component: {fileID: 8842024822361446808} m_Layer: 8 m_Name: Oldman m_TagString: Usable @@ -27,7 +28,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5304524770463492230} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -1.584, y: -1.731, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] @@ -145,3 +146,25 @@ MonoBehaviour: m_EditorClassIdentifier: consumeTime: 3 waitingTime: 10 +--- !u!195 &8842024822361446808 +NavMeshAgent: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5304524770463492230} + m_Enabled: 1 + m_AgentTypeID: 0 + m_Radius: 0.32 + m_Speed: 1 + m_Acceleration: 8 + avoidancePriority: 50 + m_AngularSpeed: 120 + m_StoppingDistance: 0 + m_AutoTraverseOffMeshLink: 1 + m_AutoBraking: 1 + m_AutoRepath: 1 + m_Height: 1.28 + m_BaseOffset: 0.64 + m_WalkableMask: 4294967295 + m_ObstacleAvoidanceType: 4 diff --git a/Assets/Scenes/Tests/SampleScene.meta b/Assets/Scenes/Tests/SampleScene.meta new file mode 100644 index 0000000..994ef92 --- /dev/null +++ b/Assets/Scenes/Tests/SampleScene.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 56d8194ea8c43424b9195430d7c9a086 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/Tests/SampleScene.unity b/Assets/Scenes/Tests/SampleScene.unity index a22c3c5..d711c0d 100644 --- a/Assets/Scenes/Tests/SampleScene.unity +++ b/Assets/Scenes/Tests/SampleScene.unity @@ -124,6 +124,80 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1001 &47257443 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 5304524770463492230, guid: 2dde00c8c5857d2438fd92435d8c3abb, + type: 3} + propertyPath: m_Name + value: Oldman + objectReference: {fileID: 0} + - target: {fileID: 5304524770463492230, guid: 2dde00c8c5857d2438fd92435d8c3abb, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5304524770463492235, guid: 2dde00c8c5857d2438fd92435d8c3abb, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5304524770463492235, guid: 2dde00c8c5857d2438fd92435d8c3abb, + type: 3} + propertyPath: m_LocalPosition.x + value: 2.64 + objectReference: {fileID: 0} + - target: {fileID: 5304524770463492235, guid: 2dde00c8c5857d2438fd92435d8c3abb, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.39 + objectReference: {fileID: 0} + - target: {fileID: 5304524770463492235, guid: 2dde00c8c5857d2438fd92435d8c3abb, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5304524770463492235, guid: 2dde00c8c5857d2438fd92435d8c3abb, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5304524770463492235, guid: 2dde00c8c5857d2438fd92435d8c3abb, + type: 3} + propertyPath: m_LocalRotation.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5304524770463492235, guid: 2dde00c8c5857d2438fd92435d8c3abb, + type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5304524770463492235, guid: 2dde00c8c5857d2438fd92435d8c3abb, + type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 5304524770463492235, guid: 2dde00c8c5857d2438fd92435d8c3abb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5304524770463492235, guid: 2dde00c8c5857d2438fd92435d8c3abb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5304524770463492235, guid: 2dde00c8c5857d2438fd92435d8c3abb, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 2dde00c8c5857d2438fd92435d8c3abb, type: 3} --- !u!1 &268005788 GameObject: m_ObjectHideFlags: 0 @@ -135,6 +209,8 @@ GameObject: - component: {fileID: 268005789} - component: {fileID: 268005791} - component: {fileID: 268005790} + - component: {fileID: 268005792} + - component: {fileID: 268005793} m_Layer: 0 m_Name: Meubles m_TagString: Untagged @@ -2807,6 +2883,102 @@ Tilemap: e31: 0 e32: 0 e33: 1 +--- !u!19719996 &268005792 +TilemapCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 268005788} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_MaximumTileChangeCount: 1000 + m_ExtrusionFactor: 0.00001 +--- !u!114 &268005793 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 268005788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1e3fdca004f2d45fe8abbed571a8abd5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_OverrideArea: 1 + m_Area: 1 + m_IgnoreFromBuild: 0 + m_AffectedAgents: ffffffff +--- !u!1 &322056902 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 322056904} + - component: {fileID: 322056903} + m_Layer: 0 + m_Name: NavMesh + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &322056903 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 322056902} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 148387606d0ccd84fa326ca211f274ba, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AgentTypeID: 0 + m_CollectObjects: 0 + m_Size: {x: 10, y: 10, z: 10} + m_Center: {x: 0, y: 2, z: 0} + m_LayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_UseGeometry: 1 + m_OverrideByGrid: 0 + m_UseMeshPrefab: {fileID: 0} + m_CompressBounds: 0 + m_OverrideVector: {x: 1, y: 1, z: 1} + m_DefaultArea: 0 + m_IgnoreNavMeshAgent: 1 + m_IgnoreNavMeshObstacle: 1 + m_OverrideTileSize: 0 + m_TileSize: 256 + m_OverrideVoxelSize: 0 + m_VoxelSize: 0.033333335 + m_BuildHeightMesh: 0 + m_NavMeshData: {fileID: 23800000, guid: cc7937d7981ac7544ad06b3b6e620754, type: 2} +--- !u!4 &322056904 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 322056902} + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 6.17, y: -0.66, z: -2.4934947} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 9 + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} --- !u!1 &519420028 GameObject: m_ObjectHideFlags: 0 @@ -2888,7 +3060,7 @@ Transform: m_LocalScale: {x: 0.5, y: 0.5, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 1 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &698542424 GameObject: @@ -2998,7 +3170,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &706948613 GameObject: @@ -3121,7 +3293,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 5 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &966209153 GameObject: @@ -3168,7 +3340,7 @@ Transform: - {fileID: 268005789} - {fileID: 2115704629} m_Father: {fileID: 0} - m_RootOrder: 7 + m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1145481934 GameObject: @@ -3181,6 +3353,8 @@ GameObject: - component: {fileID: 1145481935} - component: {fileID: 1145481937} - component: {fileID: 1145481936} + - component: {fileID: 1145481938} + - component: {fileID: 1145481939} m_Layer: 0 m_Name: "Murs et Portes/fen\xEAtres" m_TagString: Untagged @@ -6783,6 +6957,38 @@ Tilemap: e31: 0 e32: 0 e33: 1 +--- !u!19719996 &1145481938 +TilemapCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1145481934} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_MaximumTileChangeCount: 1000 + m_ExtrusionFactor: 0.00001 +--- !u!114 &1145481939 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1145481934} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1e3fdca004f2d45fe8abbed571a8abd5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_OverrideArea: 1 + m_Area: 1 + m_IgnoreFromBuild: 0 + m_AffectedAgents: ffffffff --- !u!1 &1160225020 GameObject: m_ObjectHideFlags: 0 @@ -6822,7 +7028,9 @@ Transform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -0.21348187, y: 4.0925093, z: -2.1510859} m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] + m_Children: + - {fileID: 1863361785} + - {fileID: 1486551544} m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -6921,7 +7129,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!61 &1163880825 BoxCollider2D: @@ -7075,7 +7283,37 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 6 + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1486551543 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1486551544} + m_Layer: 0 + m_Name: ClientSpawn + m_TagString: Untagged + m_Icon: {fileID: -5487077368411116049, guid: 0000000000000000d000000000000000, type: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1486551544 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1486551543} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4.963482, y: -3.7325091, z: -3.6281848} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1160225022} + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1520733216 GameObject: @@ -7088,6 +7326,7 @@ GameObject: - component: {fileID: 1520733217} - component: {fileID: 1520733219} - component: {fileID: 1520733218} + - component: {fileID: 1520733220} m_Layer: 0 m_Name: Sols m_TagString: Untagged @@ -31829,6 +32068,136 @@ Tilemap: e31: 0 e32: 0 e33: 1 +--- !u!114 &1520733220 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1520733216} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1e3fdca004f2d45fe8abbed571a8abd5, type: 3} + m_Name: + m_EditorClassIdentifier: + m_OverrideArea: 0 + m_Area: 0 + m_IgnoreFromBuild: 0 + m_AffectedAgents: ffffffff +--- !u!1 &1678986451 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1678986453} + - component: {fileID: 1678986452} + m_Layer: 0 + m_Name: Chair 1 + m_TagString: Untagged + m_Icon: {fileID: 6519382022992737161, guid: 0000000000000000d000000000000000, type: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!212 &1678986452 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1678986451} + m_Enabled: 0 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: -1209127185579228243, guid: bfabe3920bf35724b9a95bf95f5431a9, + type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.175, y: 0.2} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!4 &1678986453 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1678986451} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: -6.6, y: -2.112, z: 2.5482712} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1863361785} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1863361784 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1863361785} + m_Layer: 0 + m_Name: Targets + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1863361785 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1863361784} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 4.208972, y: -3.622787, z: -3.5789394} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1678986453} + m_Father: {fileID: 1160225022} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &2115704628 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/Tests/SampleScene/NavMesh-NavMesh.asset b/Assets/Scenes/Tests/SampleScene/NavMesh-NavMesh.asset new file mode 100644 index 0000000000000000000000000000000000000000..a9a36a14f41013e5ec1dcdfb997a04c2a2470c95 GIT binary patch literal 16968 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 + //Prevent rotation of the ground at movement + agent.updateRotation = false; + agent.updateUpAxis = false; + //Get target + agent.destination = ClientManager.Instance.assignTarget().position; } // Update is called once per frame void Update() { + //Navigation + // if (Vector2.Distance(destination, target.position) > 1.0f) + // { + // destination = target.position; + // agent.destination = destination; + // } + //Timer if (currentMug!= null) //Consuming mug if there's one { diff --git a/Assets/Scripts/GameSystems/ClientManager.cs b/Assets/Scripts/GameSystems/ClientManager.cs index b237a8d..f2be55c 100644 --- a/Assets/Scripts/GameSystems/ClientManager.cs +++ b/Assets/Scripts/GameSystems/ClientManager.cs @@ -9,18 +9,20 @@ public sealed class ClientManager : MonoBehaviour int currentNbClient = 0; int nbMaxClients = 1; bool clientSpawnReady = false; - float clientSpawnTimer = 2.0f; //Intial time before first spawn (pseudo-random after that) + float clientSpawnTimer = 0.5f; //Intial time before first spawn (pseudo-random after that) float maxTimeNewClients = 10.0f; string ClientRessourceFolder = "Clients"; - Vector3 spawnPosition = new Vector3(0, 0, 0); private Object[] clients; + Vector3 spawnPosition = new Vector3(0, 0, 0); //TODO : Use gameObject + Dictionary targets_dict; //Dict with target and wether they're taken by a client + //Request new client //Return wether a new client was created public bool clientRequest() { - if(clientSpawnReady && currentNbClient avail_tgt = new List(); + foreach(KeyValuePair tgt in targets_dict) + if(tgt.Value is false) + avail_tgt.Add(tgt.Key); + + Transform target = avail_tgt[Random.Range(0, avail_tgt.Count)]; + targets_dict[target]=true; + return target; + } + // Start is called before the first frame update void Start() { + // Load clients prefabs // + // Find all assets labelled with 'usable' : // string[] guids = AssetDatabase.FindAssets("", new string[] {"Assets/Prefabs/Characters/Clients"}); @@ -52,6 +69,31 @@ public sealed class ClientManager : MonoBehaviour { Debug.Log(gameObject.name+" : "+c.name + " loaded"); } + + // Load Client spawn point // + GameObject spawnObj = GameObject.Find("/GameSystem/ClientSpawn"); + if (spawnObj is null) + throw new System.Exception("No ClientSpawn GameObject found under GameSystem"); + spawnPosition = spawnObj.transform.position; + + // Load Client targets // + targets_dict = new Dictionary(); + GameObject targetsObj = GameObject.Find("/GameSystem/Targets"); + if (targetsObj is null) + throw new System.Exception("No Targets GameObject found under GameSystem"); + + Component[] targets = targetsObj.GetComponentsInChildren(); + if(targets != null) + { + foreach(Transform target in targets) + { + if(target.gameObject.name != "Targets") + { + targets_dict.Add(target, false); + Debug.Log("Client target : "+ target.gameObject.name + target.position); + } + } + } } // Update is called once per frame diff --git a/Packages/manifest.json b/Packages/manifest.json index ce870b7..34e78c1 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,5 +1,6 @@ { "dependencies": { + "com.h8man.2d.navmeshplus": "https://github.com/h8man/NavMeshPlus.git#master", "com.unity.2d.animation": "4.2.6", "com.unity.2d.pixel-perfect": "3.0.2", "com.unity.2d.psdimporter": "3.1.6", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index fdde7e7..a0b02aa 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -1,5 +1,12 @@ { "dependencies": { + "com.h8man.2d.navmeshplus": { + "version": "https://github.com/h8man/NavMeshPlus.git#master", + "depth": 0, + "source": "git", + "dependencies": {}, + "hash": "86ceea0dfe7bcd8db2a486bd68c4c095ae4299e0" + }, "com.unity.2d.animation": { "version": "4.2.6", "depth": 0, diff --git a/ProjectSettings/NavMeshAreas.asset b/ProjectSettings/NavMeshAreas.asset index 3b0b7c3..a88505d 100644 --- a/ProjectSettings/NavMeshAreas.asset +++ b/ProjectSettings/NavMeshAreas.asset @@ -73,7 +73,7 @@ NavMeshProjectSettings: m_Settings: - serializedVersion: 2 agentTypeID: 0 - agentRadius: 0.5 + agentRadius: 0.1 agentHeight: 2 agentSlope: 45 agentClimb: 0.75 @@ -85,6 +85,8 @@ NavMeshProjectSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_SettingNames: