From 25eac00c537a42d3a65175c6a0994cad5d841296 Mon Sep 17 00:00:00 2001 From: Koha9 Date: Tue, 29 Nov 2022 07:54:08 +0900 Subject: [PATCH] Target & dynamic reward System V1.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 太多了...总之能用了,就这样吧,也懒得用英文写了(;´Д`) ParameterContainer用于管理所有的Reward和Parameter. TargetController用于生成目标,然后再让SceneBlockContainer实际生成目标块,并且兼顾reward计算功能和目标观察结果的获取. EnemyContainer用于生成和删除敌人. SceneBlockContainer用于生成和删除目标块. States用于管理HP. SceneBlock用于管理目标块的...一堆东西,比如目标大小,目标区内人数等和目标所属状态等. --- Assets/1x20Cube.prefab | 315 - Assets/1x5Cube.prefab | 315 - Assets/EnviromentUIControl.cs | 71 - .../prototype_texture_512x512.psd.meta | 2 +- .../Textures/prototype_512x512_blue2.png.meta | 10 +- Assets/Img/FirebaseCircle.png | Bin 0 -> 16104 bytes Assets/Img/FirebaseCircle.png.meta | 96 + Assets/Img/Green.png | Bin 1794 -> 1999 bytes Assets/Img/Materials.meta | 8 + Assets/Img/Materials/FirebaseCircle.mat | 79 + Assets/Img/Materials/FirebaseCircle.mat.meta | 8 + Assets/Img/White.png | Bin 0 -> 1988 bytes Assets/Img/White.png.meta | 108 + Assets/ML-Agents/Timers/InGame_timers.json | 2 +- Assets/Prefeb/AttackBlock.meta | 8 + Assets/Prefeb/AttackBlock/Attack-0.prefab | 2032 ++ .../AttackBlock/Attack-0.prefab.meta} | 2 +- .../AttackBlock/Attack-BigRoom-1.prefab | 1874 ++ .../AttackBlock/Attack-BigRoom-1.prefab.meta} | 2 +- .../AttackBlock/Attack-BigRoom-2.prefab | 2666 ++ .../AttackBlock/Attack-BigRoom-2.prefab.meta | 7 + .../Attack-BigRoom-littleArea.prefab | 1874 ++ .../Attack-BigRoom-littleArea.prefab.meta | 7 + Assets/Prefeb/AttackBlock/Empty-0.prefab | 336 + Assets/Prefeb/AttackBlock/Empty-0.prefab.meta | 7 + Assets/Prefeb/AttackBlock/Empty-1.prefab | 336 + Assets/Prefeb/AttackBlock/Empty-1.prefab.meta | 7 + Assets/Prefeb/BlockBase.prefab | 207 + Assets/Prefeb/BlockBase.prefab.meta | 7 + Assets/Prefeb/DefenceBlock.meta | 8 + .../DefenceBlock/Defence-BigRoom-1.prefab | 2270 ++ .../Defence-BigRoom-1.prefab.meta | 7 + .../DefenceBlock/Defence-DoubleL.prefab | 1541 ++ .../DefenceBlock/Defence-DoubleL.prefab.meta | 7 + .../Prefeb/DefenceBlock/Defence-Open.prefab | 844 + .../DefenceBlock/Defence-Open.prefab.meta | 7 + Assets/Prefeb/Enemy-Simple.prefab | 29 +- Assets/Prefeb/GoBlock.meta | 8 + .../GoBlock/Go-BigRoom-littleArea-1.prefab | 1874 ++ .../Go-BigRoom-littleArea-1.prefab.meta | 7 + .../GoBlock/Go-BigRoom-littleArea.prefab | 1874 ++ .../GoBlock/Go-BigRoom-littleArea.prefab.meta | 7 + .../GoBlock/Go-littleArea-with1Enemy.prefab | 606 + .../Go-littleArea-with1Enemy.prefab.meta | 7 + Assets/Prefeb/GoBlock/GoEmpty-0.prefab | 210 + Assets/Prefeb/GoBlock/GoEmpty-0.prefab.meta | 7 + Assets/Prefeb/GoBlock/GoEmpty-1.prefab | 210 + Assets/Prefeb/GoBlock/GoEmpty-1.prefab.meta | 7 + Assets/Prefeb/RewardChart.prefab | 7942 ++++++ Assets/Prefeb/RewardChart.prefab.meta | 7 + Assets/Scenes/InGame.unity | 22045 +++++++++------- Assets/Script/InGame/AgentWithGun.cs | 218 +- Assets/Script/InGame/Enemy.cs | 80 +- Assets/Script/InGame/EnemyContainer.cs | 67 + ...myHPBar.cs.meta => EnemyContainer.cs.meta} | 2 +- Assets/Script/InGame/EnvironmentUIControl.cs | 114 + .../InGame/EnvironmentUIControl.cs.meta} | 0 .../Script/InGame/{EnemyHPBar.cs => HPBar.cs} | 16 +- .../InGame/HPBar.cs.meta} | 2 +- Assets/Script/InGame/ParameterContainer.cs | 130 + .../Script/InGame/ParameterContainer.cs.meta | 11 + Assets/Script/InGame/RaySensors.cs | 11 +- Assets/Script/InGame/SceneBlock.cs | 197 + Assets/Script/InGame/SceneBlock.cs.meta | 11 + Assets/Script/InGame/SceneBlockContainer.cs | 77 + .../Script/InGame/SceneBlockContainer.cs.meta | 11 + Assets/Script/InGame/TargetController.cs | 379 + Assets/Script/InGame/TargetController.cs.meta | 11 + Assets/Script/InGame/WorldUIController.cs | 68 + .../Script/InGame/WorldUIController.cs.meta | 11 + Assets/Script/InGame/states.cs | 58 + Assets/Script/InGame/states.cs.meta | 11 + Assets/XCharts/Resources/XCSettings.asset | 2 + Assets/parameterContainer.cs | 33 - Packages/manifest.json | 11 +- Packages/packages-lock.json | 56 +- ProjectSettings/GraphicsSettings.asset | 6 +- ProjectSettings/MemorySettings.asset | 35 + .../com.unity.probuilder/Settings.json | 133 + ProjectSettings/ProjectVersion.txt | 4 +- ProjectSettings/boot.config | 0 UserSettings/EditorUserSettings.asset | 3 + UserSettings/Layouts/default-2021.dwlt | 1102 + UserSettings/Search.settings | 1 + 84 files changed, 42271 insertions(+), 10510 deletions(-) delete mode 100644 Assets/1x20Cube.prefab delete mode 100644 Assets/1x5Cube.prefab delete mode 100644 Assets/EnviromentUIControl.cs create mode 100644 Assets/Img/FirebaseCircle.png create mode 100644 Assets/Img/FirebaseCircle.png.meta create mode 100644 Assets/Img/Materials.meta create mode 100644 Assets/Img/Materials/FirebaseCircle.mat create mode 100644 Assets/Img/Materials/FirebaseCircle.mat.meta create mode 100644 Assets/Img/White.png create mode 100644 Assets/Img/White.png.meta create mode 100644 Assets/Prefeb/AttackBlock.meta create mode 100644 Assets/Prefeb/AttackBlock/Attack-0.prefab rename Assets/{1x20Cube.prefab.meta => Prefeb/AttackBlock/Attack-0.prefab.meta} (74%) create mode 100644 Assets/Prefeb/AttackBlock/Attack-BigRoom-1.prefab rename Assets/{1x5Cube.prefab.meta => Prefeb/AttackBlock/Attack-BigRoom-1.prefab.meta} (74%) create mode 100644 Assets/Prefeb/AttackBlock/Attack-BigRoom-2.prefab create mode 100644 Assets/Prefeb/AttackBlock/Attack-BigRoom-2.prefab.meta create mode 100644 Assets/Prefeb/AttackBlock/Attack-BigRoom-littleArea.prefab create mode 100644 Assets/Prefeb/AttackBlock/Attack-BigRoom-littleArea.prefab.meta create mode 100644 Assets/Prefeb/AttackBlock/Empty-0.prefab create mode 100644 Assets/Prefeb/AttackBlock/Empty-0.prefab.meta create mode 100644 Assets/Prefeb/AttackBlock/Empty-1.prefab create mode 100644 Assets/Prefeb/AttackBlock/Empty-1.prefab.meta create mode 100644 Assets/Prefeb/BlockBase.prefab create mode 100644 Assets/Prefeb/BlockBase.prefab.meta create mode 100644 Assets/Prefeb/DefenceBlock.meta create mode 100644 Assets/Prefeb/DefenceBlock/Defence-BigRoom-1.prefab create mode 100644 Assets/Prefeb/DefenceBlock/Defence-BigRoom-1.prefab.meta create mode 100644 Assets/Prefeb/DefenceBlock/Defence-DoubleL.prefab create mode 100644 Assets/Prefeb/DefenceBlock/Defence-DoubleL.prefab.meta create mode 100644 Assets/Prefeb/DefenceBlock/Defence-Open.prefab create mode 100644 Assets/Prefeb/DefenceBlock/Defence-Open.prefab.meta create mode 100644 Assets/Prefeb/GoBlock.meta create mode 100644 Assets/Prefeb/GoBlock/Go-BigRoom-littleArea-1.prefab create mode 100644 Assets/Prefeb/GoBlock/Go-BigRoom-littleArea-1.prefab.meta create mode 100644 Assets/Prefeb/GoBlock/Go-BigRoom-littleArea.prefab create mode 100644 Assets/Prefeb/GoBlock/Go-BigRoom-littleArea.prefab.meta create mode 100644 Assets/Prefeb/GoBlock/Go-littleArea-with1Enemy.prefab create mode 100644 Assets/Prefeb/GoBlock/Go-littleArea-with1Enemy.prefab.meta create mode 100644 Assets/Prefeb/GoBlock/GoEmpty-0.prefab create mode 100644 Assets/Prefeb/GoBlock/GoEmpty-0.prefab.meta create mode 100644 Assets/Prefeb/GoBlock/GoEmpty-1.prefab create mode 100644 Assets/Prefeb/GoBlock/GoEmpty-1.prefab.meta create mode 100644 Assets/Prefeb/RewardChart.prefab create mode 100644 Assets/Prefeb/RewardChart.prefab.meta create mode 100644 Assets/Script/InGame/EnemyContainer.cs rename Assets/Script/InGame/{EnemyHPBar.cs.meta => EnemyContainer.cs.meta} (83%) create mode 100644 Assets/Script/InGame/EnvironmentUIControl.cs rename Assets/{EnviromentUIControl.cs.meta => Script/InGame/EnvironmentUIControl.cs.meta} (100%) rename Assets/Script/InGame/{EnemyHPBar.cs => HPBar.cs} (69%) rename Assets/{parameterContainer.cs.meta => Script/InGame/HPBar.cs.meta} (83%) create mode 100644 Assets/Script/InGame/ParameterContainer.cs create mode 100644 Assets/Script/InGame/ParameterContainer.cs.meta create mode 100644 Assets/Script/InGame/SceneBlock.cs create mode 100644 Assets/Script/InGame/SceneBlock.cs.meta create mode 100644 Assets/Script/InGame/SceneBlockContainer.cs create mode 100644 Assets/Script/InGame/SceneBlockContainer.cs.meta create mode 100644 Assets/Script/InGame/TargetController.cs create mode 100644 Assets/Script/InGame/TargetController.cs.meta create mode 100644 Assets/Script/InGame/WorldUIController.cs create mode 100644 Assets/Script/InGame/WorldUIController.cs.meta create mode 100644 Assets/Script/InGame/states.cs create mode 100644 Assets/Script/InGame/states.cs.meta delete mode 100644 Assets/parameterContainer.cs create mode 100644 ProjectSettings/MemorySettings.asset create mode 100644 ProjectSettings/Packages/com.unity.probuilder/Settings.json create mode 100644 ProjectSettings/boot.config create mode 100644 UserSettings/Layouts/default-2021.dwlt create mode 100644 UserSettings/Search.settings diff --git a/Assets/1x20Cube.prefab b/Assets/1x20Cube.prefab deleted file mode 100644 index 4b14f4b..0000000 --- a/Assets/1x20Cube.prefab +++ /dev/null @@ -1,315 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &589623276620307787 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2549211768804229017} - - component: {fileID: 1052484998016832026} - - component: {fileID: 2381076109874992468} - - component: {fileID: 1721641481729382250} - - component: {fileID: 3332178016245946598} - m_Layer: 0 - m_Name: 1x20Cube - m_TagString: Wall - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2549211768804229017 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 589623276620307787} - 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_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &1052484998016832026 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 589623276620307787} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8233d90336aea43098adf6dbabd606a2, type: 3} - m_Name: - m_EditorClassIdentifier: - m_MeshFormatVersion: 1 - m_Faces: - - m_Indexes: 000000000100000002000000010000000300000002000000 - m_SmoothingGroup: 0 - m_Uv: - m_UseWorldSpace: 0 - m_FlipU: 0 - m_FlipV: 0 - m_SwapUV: 0 - m_Fill: 1 - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Rotation: 0 - m_Anchor: 9 - m_Material: {fileID: 0} - m_SubmeshIndex: 0 - m_ManualUV: 0 - elementGroup: -1 - m_TextureGroup: -1 - - m_Indexes: 040000000500000006000000050000000700000006000000 - m_SmoothingGroup: 0 - m_Uv: - m_UseWorldSpace: 0 - m_FlipU: 0 - m_FlipV: 0 - m_SwapUV: 0 - m_Fill: 1 - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Rotation: 0 - m_Anchor: 9 - m_Material: {fileID: 0} - m_SubmeshIndex: 0 - m_ManualUV: 0 - elementGroup: -1 - m_TextureGroup: -1 - - m_Indexes: 08000000090000000a000000090000000b0000000a000000 - m_SmoothingGroup: 0 - m_Uv: - m_UseWorldSpace: 0 - m_FlipU: 0 - m_FlipV: 0 - m_SwapUV: 0 - m_Fill: 1 - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Rotation: 0 - m_Anchor: 9 - m_Material: {fileID: 0} - m_SubmeshIndex: 0 - m_ManualUV: 0 - elementGroup: -1 - m_TextureGroup: -1 - - m_Indexes: 0c0000000d0000000e0000000d0000000f0000000e000000 - m_SmoothingGroup: 0 - m_Uv: - m_UseWorldSpace: 0 - m_FlipU: 0 - m_FlipV: 0 - m_SwapUV: 0 - m_Fill: 1 - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Rotation: 0 - m_Anchor: 9 - m_Material: {fileID: 0} - m_SubmeshIndex: 0 - m_ManualUV: 0 - elementGroup: -1 - m_TextureGroup: -1 - - m_Indexes: 100000001100000012000000110000001300000012000000 - m_SmoothingGroup: 0 - m_Uv: - m_UseWorldSpace: 0 - m_FlipU: 0 - m_FlipV: 0 - m_SwapUV: 0 - m_Fill: 1 - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Rotation: 0 - m_Anchor: 9 - m_Material: {fileID: 0} - m_SubmeshIndex: 0 - m_ManualUV: 0 - elementGroup: -1 - m_TextureGroup: -1 - - m_Indexes: 140000001500000016000000150000001700000016000000 - m_SmoothingGroup: 0 - m_Uv: - m_UseWorldSpace: 0 - m_FlipU: 0 - m_FlipV: 0 - m_SwapUV: 0 - m_Fill: 1 - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Rotation: 0 - m_Anchor: 9 - m_Material: {fileID: 0} - m_SubmeshIndex: 0 - m_ManualUV: 0 - elementGroup: -1 - m_TextureGroup: -1 - m_SharedVertices: - - m_Vertices: 000000000d00000016000000 - - m_Vertices: 010000000400000017000000 - - m_Vertices: 020000000f00000010000000 - - m_Vertices: 030000000600000011000000 - - m_Vertices: 050000000800000015000000 - - m_Vertices: 070000000a00000013000000 - - m_Vertices: 090000000c00000014000000 - - m_Vertices: 0b0000000e00000012000000 - m_SharedTextures: [] - m_Positions: - - {x: 0, y: 0, z: 0} - - {x: 20, y: 0, z: 0} - - {x: 0, y: 2, z: 0} - - {x: 20, y: 2, z: 0} - - {x: 20, y: 0, z: 0} - - {x: 20, y: 0, z: -1} - - {x: 20, y: 2, z: 0} - - {x: 20, y: 2, z: -1} - - {x: 20, y: 0, z: -1} - - {x: 0, y: 0, z: -1} - - {x: 20, y: 2, z: -1} - - {x: 0, y: 2, z: -1} - - {x: 0, y: 0, z: -1} - - {x: 0, y: 0, z: 0} - - {x: 0, y: 2, z: -1} - - {x: 0, y: 2, z: 0} - - {x: 0, y: 2, z: 0} - - {x: 20, y: 2, z: 0} - - {x: 0, y: 2, z: -1} - - {x: 20, y: 2, z: -1} - - {x: 0, y: 0, z: -1} - - {x: 20, y: 0, z: -1} - - {x: 0, y: 0, z: 0} - - {x: 20, y: 0, z: 0} - m_Textures0: - - {x: 0, y: 0} - - {x: -20, y: 0} - - {x: 0, y: 2} - - {x: -20, y: 2} - - {x: 0, y: 0} - - {x: -1, y: 0} - - {x: 0, y: 2} - - {x: -1, y: 2} - - {x: 20, y: 0} - - {x: 0, y: 0} - - {x: 20, y: 2} - - {x: 0, y: 2} - - {x: 1, y: 0} - - {x: 0, y: 0} - - {x: 1, y: 2} - - {x: 0, y: 2} - - {x: 0, y: 0} - - {x: 20, y: 0} - - {x: 0, y: -1} - - {x: 20, y: -1} - - {x: 0, y: -1} - - {x: -20, y: -1} - - {x: 0, y: 0} - - {x: -20, y: 0} - m_Textures2: [] - m_Textures3: [] - m_Tangents: - - {x: -1, y: 0, z: 0, w: -1} - - {x: -1, y: 0, z: 0, w: -1} - - {x: -1, y: 0, z: 0, w: -1} - - {x: -1, y: 0, z: 0, w: -1} - - {x: 0, y: 0, z: 1, w: -1} - - {x: 0, y: 0, z: 1, w: -1} - - {x: 0, y: 0, z: 1, w: -1} - - {x: 0, y: 0, z: 1, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: 0, y: 0, z: -1, w: -1} - - {x: 0, y: 0, z: -1, w: -1} - - {x: 0, y: 0, z: -1, w: -1} - - {x: 0, y: 0, z: -1, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: -1, y: 0, z: 0, w: -1} - - {x: -1, y: 0, z: 0, w: -1} - - {x: -1, y: 0, z: 0, w: -1} - - {x: -1, y: 0, z: 0, w: -1} - m_Colors: [] - m_UnwrapParameters: - m_HardAngle: 88 - m_PackMargin: 20 - m_AngleError: 8 - m_AreaError: 15 - m_PreserveMeshAssetOnDestroy: 0 - assetGuid: - m_Mesh: {fileID: 0} - m_IsSelectable: 1 - m_SelectedFaces: - m_SelectedEdges: [] - m_SelectedVertices: ---- !u!23 &2381076109874992468 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 589623276620307787} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - 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: e7fec641232aada4b9419c7ece6a7203, 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: 2 - 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 &1721641481729382250 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 589623276620307787} - m_Mesh: {fileID: 0} ---- !u!64 &3332178016245946598 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 589623276620307787} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 0} diff --git a/Assets/1x5Cube.prefab b/Assets/1x5Cube.prefab deleted file mode 100644 index 5c18529..0000000 --- a/Assets/1x5Cube.prefab +++ /dev/null @@ -1,315 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!1 &8292847989533250525 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8038673802331550199} - - component: {fileID: 5046978806096422044} - - component: {fileID: 8722606809633521714} - - component: {fileID: 5062173087561975370} - - component: {fileID: 6727079418557461791} - m_Layer: 0 - m_Name: 1x5Cube - m_TagString: Wall - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8038673802331550199 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8292847989533250525} - 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_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &5046978806096422044 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8292847989533250525} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 8233d90336aea43098adf6dbabd606a2, type: 3} - m_Name: - m_EditorClassIdentifier: - m_MeshFormatVersion: 1 - m_Faces: - - m_Indexes: 000000000100000002000000010000000300000002000000 - m_SmoothingGroup: 0 - m_Uv: - m_UseWorldSpace: 0 - m_FlipU: 0 - m_FlipV: 0 - m_SwapUV: 0 - m_Fill: 1 - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Rotation: 0 - m_Anchor: 9 - m_Material: {fileID: 0} - m_SubmeshIndex: 0 - m_ManualUV: 0 - elementGroup: -1 - m_TextureGroup: -1 - - m_Indexes: 040000000500000006000000050000000700000006000000 - m_SmoothingGroup: 0 - m_Uv: - m_UseWorldSpace: 0 - m_FlipU: 0 - m_FlipV: 0 - m_SwapUV: 0 - m_Fill: 1 - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Rotation: 0 - m_Anchor: 9 - m_Material: {fileID: 0} - m_SubmeshIndex: 0 - m_ManualUV: 0 - elementGroup: -1 - m_TextureGroup: -1 - - m_Indexes: 08000000090000000a000000090000000b0000000a000000 - m_SmoothingGroup: 0 - m_Uv: - m_UseWorldSpace: 0 - m_FlipU: 0 - m_FlipV: 0 - m_SwapUV: 0 - m_Fill: 1 - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Rotation: 0 - m_Anchor: 9 - m_Material: {fileID: 0} - m_SubmeshIndex: 0 - m_ManualUV: 0 - elementGroup: -1 - m_TextureGroup: -1 - - m_Indexes: 0c0000000d0000000e0000000d0000000f0000000e000000 - m_SmoothingGroup: 0 - m_Uv: - m_UseWorldSpace: 0 - m_FlipU: 0 - m_FlipV: 0 - m_SwapUV: 0 - m_Fill: 1 - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Rotation: 0 - m_Anchor: 9 - m_Material: {fileID: 0} - m_SubmeshIndex: 0 - m_ManualUV: 0 - elementGroup: -1 - m_TextureGroup: -1 - - m_Indexes: 100000001100000012000000110000001300000012000000 - m_SmoothingGroup: 0 - m_Uv: - m_UseWorldSpace: 0 - m_FlipU: 0 - m_FlipV: 0 - m_SwapUV: 0 - m_Fill: 1 - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Rotation: 0 - m_Anchor: 9 - m_Material: {fileID: 0} - m_SubmeshIndex: 0 - m_ManualUV: 0 - elementGroup: -1 - m_TextureGroup: -1 - - m_Indexes: 140000001500000016000000150000001700000016000000 - m_SmoothingGroup: 0 - m_Uv: - m_UseWorldSpace: 0 - m_FlipU: 0 - m_FlipV: 0 - m_SwapUV: 0 - m_Fill: 1 - m_Scale: {x: 1, y: 1} - m_Offset: {x: 0, y: 0} - m_Rotation: 0 - m_Anchor: 9 - m_Material: {fileID: 0} - m_SubmeshIndex: 0 - m_ManualUV: 0 - elementGroup: -1 - m_TextureGroup: -1 - m_SharedVertices: - - m_Vertices: 000000000d00000016000000 - - m_Vertices: 010000000400000017000000 - - m_Vertices: 020000000f00000010000000 - - m_Vertices: 030000000600000011000000 - - m_Vertices: 050000000800000015000000 - - m_Vertices: 070000000a00000013000000 - - m_Vertices: 090000000c00000014000000 - - m_Vertices: 0b0000000e00000012000000 - m_SharedTextures: [] - m_Positions: - - {x: 0, y: 0, z: 0} - - {x: 5, y: 0, z: 0} - - {x: 0, y: 2, z: 0} - - {x: 5, y: 2, z: 0} - - {x: 5, y: 0, z: 0} - - {x: 5, y: 0, z: -1} - - {x: 5, y: 2, z: 0} - - {x: 5, y: 2, z: -1} - - {x: 5, y: 0, z: -1} - - {x: 0, y: 0, z: -1} - - {x: 5, y: 2, z: -1} - - {x: 0, y: 2, z: -1} - - {x: 0, y: 0, z: -1} - - {x: 0, y: 0, z: 0} - - {x: 0, y: 2, z: -1} - - {x: 0, y: 2, z: 0} - - {x: 0, y: 2, z: 0} - - {x: 5, y: 2, z: 0} - - {x: 0, y: 2, z: -1} - - {x: 5, y: 2, z: -1} - - {x: 0, y: 0, z: -1} - - {x: 5, y: 0, z: -1} - - {x: 0, y: 0, z: 0} - - {x: 5, y: 0, z: 0} - m_Textures0: - - {x: 0, y: 0} - - {x: -5, y: 0} - - {x: 0, y: 2} - - {x: -5, y: 2} - - {x: 0, y: 0} - - {x: -1, y: 0} - - {x: 0, y: 2} - - {x: -1, y: 2} - - {x: 5, y: 0} - - {x: 0, y: 0} - - {x: 5, y: 2} - - {x: 0, y: 2} - - {x: 1, y: 0} - - {x: 0, y: 0} - - {x: 1, y: 2} - - {x: 0, y: 2} - - {x: 0, y: 0} - - {x: 5, y: 0} - - {x: 0, y: -1} - - {x: 5, y: -1} - - {x: 0, y: -1} - - {x: -5, y: -1} - - {x: 0, y: 0} - - {x: -5, y: 0} - m_Textures2: [] - m_Textures3: [] - m_Tangents: - - {x: -1, y: 0, z: 0, w: -1} - - {x: -1, y: 0, z: 0, w: -1} - - {x: -1, y: 0, z: 0, w: -1} - - {x: -1, y: 0, z: 0, w: -1} - - {x: 0, y: 0, z: 1, w: -1} - - {x: 0, y: 0, z: 1, w: -1} - - {x: 0, y: 0, z: 1, w: -1} - - {x: 0, y: 0, z: 1, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: 0, y: 0, z: -1, w: -1} - - {x: 0, y: 0, z: -1, w: -1} - - {x: 0, y: 0, z: -1, w: -1} - - {x: 0, y: 0, z: -1, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: 1, y: 0, z: 0, w: -1} - - {x: -1, y: 0, z: 0, w: -1} - - {x: -1, y: 0, z: 0, w: -1} - - {x: -1, y: 0, z: 0, w: -1} - - {x: -1, y: 0, z: 0, w: -1} - m_Colors: [] - m_UnwrapParameters: - m_HardAngle: 88 - m_PackMargin: 20 - m_AngleError: 8 - m_AreaError: 15 - m_PreserveMeshAssetOnDestroy: 0 - assetGuid: - m_Mesh: {fileID: 0} - m_IsSelectable: 1 - m_SelectedFaces: - m_SelectedEdges: [] - m_SelectedVertices: ---- !u!23 &8722606809633521714 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8292847989533250525} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - 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: e7fec641232aada4b9419c7ece6a7203, 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: 2 - 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 &5062173087561975370 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8292847989533250525} - m_Mesh: {fileID: 0} ---- !u!64 &6727079418557461791 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8292847989533250525} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 0} diff --git a/Assets/EnviromentUIControl.cs b/Assets/EnviromentUIControl.cs deleted file mode 100644 index ba3b2bb..0000000 --- a/Assets/EnviromentUIControl.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using TMPro; -using UnityEngine; -using UnityEngine.UI; -using XCharts.Runtime; - -public class EnviromentUIControl : MonoBehaviour -{ - public GameObject agentObj; - public TextMeshProUGUI remainTimeText; - public TextMeshProUGUI winLoseText; - private AgentWithGun agentScript; - public LineChart realTimeRewardChart; - public GameObject chartContainer; - private float overTime = 0f; - private int step = 0; - private bool resultActive = false; - - // Start is called before the first frame update - void Start() - { - agentScript = agentObj.GetComponent(); - } - - // Update is called once per frame - void Update() - { - int remainTime = agentScript.remainTime; - int finishedState = agentScript.finishedState;// 1 = win,2 = lose,0 = not dont - remainTimeText.text = "RemainTime:" + remainTime.ToString(); - if (finishedState == 1) - { - //Win - Debug.Log("win"); - winLoseText.text = "Win"; - winLoseText.color = Color.green; - overTime = Time.time; - resultActive = true; - } - else if (finishedState == 2) - { - //lose - Debug.Log("lose"); - winLoseText.text = "Lose"; - winLoseText.color = Color.red; - overTime = Time.time; - resultActive = true; - } - else if (finishedState == 0 && resultActive && Time.time - overTime >= 1) - { - Debug.Log("clear"); - winLoseText.text = ""; - winLoseText.color = Color.white; - resultActive = false; - } - } - public void updateChart(float reward) - { - step += 1; - realTimeRewardChart.AddXAxisData(Convert.ToString(step)); - realTimeRewardChart.AddData(0, reward); - } - - public void initChart() - { - realTimeRewardChart.RemoveData(); - realTimeRewardChart.AddSerie("Rewards"); - } -} diff --git a/Assets/Gridbox Prototype Materials/Template/prototype_texture_512x512.psd.meta b/Assets/Gridbox Prototype Materials/Template/prototype_texture_512x512.psd.meta index 1eb1c70..4635803 100644 --- a/Assets/Gridbox Prototype Materials/Template/prototype_texture_512x512.psd.meta +++ b/Assets/Gridbox Prototype Materials/Template/prototype_texture_512x512.psd.meta @@ -90,7 +90,7 @@ TextureImporter: secondaryTextures: [] spritePackingTag: pSDRemoveMatte: 0 - pSDShowRemoveMatteOption: 0 + pSDShowRemoveMatteOption: 1 userData: assetBundleName: assetBundleVariant: diff --git a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue2.png.meta b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue2.png.meta index ce57958..42d5f66 100644 --- a/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue2.png.meta +++ b/Assets/Gridbox Prototype Materials/Textures/prototype_512x512_blue2.png.meta @@ -23,6 +23,7 @@ TextureImporter: isReadable: 0 streamingMipmaps: 0 streamingMipmapsPriority: 0 + vTOnly: 0 grayScaleToAlpha: 0 generateCubemap: 6 cubemapConvolution: 0 @@ -31,9 +32,9 @@ TextureImporter: maxTextureSize: 2048 textureSettings: serializedVersion: 2 - filterMode: -1 - aniso: -1 - mipBias: -100 + filterMode: 1 + aniso: 1 + mipBias: 0 wrapU: 0 wrapV: 0 wrapW: 0 @@ -54,9 +55,12 @@ TextureImporter: textureType: 0 textureShape: 1 singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 maxTextureSizeSet: 0 compressionQualitySet: 0 textureFormatSet: 0 + ignorePngGamma: 0 applyGammaDecoding: 1 platformSettings: - serializedVersion: 3 diff --git a/Assets/Img/FirebaseCircle.png b/Assets/Img/FirebaseCircle.png new file mode 100644 index 0000000000000000000000000000000000000000..c1466eb2a406858116b3c8d9e3354c8c0cf4c32e GIT binary patch literal 16104 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 Ba|Qqa literal 0 HcmV?d00001 diff --git a/Assets/Img/FirebaseCircle.png.meta b/Assets/Img/FirebaseCircle.png.meta new file mode 100644 index 0000000..19eb416 --- /dev/null +++ b/Assets/Img/FirebaseCircle.png.meta @@ -0,0 +1,96 @@ +fileFormatVersion: 2 +guid: 2e8a4c324d97191458208abd2efd1c01 +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 0 + wrapV: 0 + wrapW: 0 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Img/Green.png b/Assets/Img/Green.png index ce2fe4b1c73976798b995c712e5b84e528f7b8c7..66d1f7816aaa10ea448a8d9413c0f648b7c97a17 100644 GIT binary patch delta 222 zcmZqTJI_DCf{AU~M5`GxNd{>aNvW1P3PuJ-hWds^`UV!dhL%=_hE_&K8{b`Jt^sjg+RnPrNx ziAhpolEG#t<{YNUDlDRtzp*H~5~D*&p}54gti-B3BQ?)f3Fty2T{Pz`WHDegn%v7; O#Zp=^Yr|x2w(kJ&r9AHd delta 83 zcmX@l-^4e;f{FFyM5`GxmdVM$ul8{b`JoIH(5 ndh$Ic0U#|onVngDvN)^SW*6oxrpeW8ku1lum)@RygY7#2AL|f*p81@FWgqBnhhYG=Ea4(={*5k2v*S5N(X*RGc;Si-ObvYn0o*D02S$mA_ zWH&h>)C)H*aNz*I0CDI6l>;c^&VigL7k&WhU*PqAHIy_BNUXH>c;)l}@|0t7(_2Cgy|? z)Nrc-37tT?YlsqR8YVS}gH6{nO^;GE`|02=6QQ@;dS~VgzMA@=C{oWbMx#-6WK~tx zH%!-c4MGh{F(7b$m=tV`ll;bjLWS9nG`qX&IDiBru*4&5~<*Z z9LgAAIS4ZsuF`=jR6bD8h-0z5h$i(mGsy~-b(I>=bZqx*!QW6^4wTUjUZz;ZCrmwW0 z_N`DHI2IZ5+%R-)R4)kloHZcn&!-255DI^a=+nuw$pGB~B*zh!KsY(E2U~v*~ zr-6wL50}^>b^;3eTw#g26^0=dIuhIqRTeYolPG3=X{1SCM^Dsjs-en!B_QWk+0DQX zQM98RN_RNhA9v-)v(Yd@lcw_+FMGYI^Rmbi{7k2#GqQIvom2bKKmzGG#h=1*6&53w z$&Ef_`nk*9aZ;p}~N(K^u6n|x~YR4_()UQRpAc)Ix}Yp2duDCA@c4(xKcxGLad zaoNZO@|3|<^6Sa(6t1C@PHUq({_W3`%8I7Fy!6eZ^#{NFaruq*qZfLsta7}xdL6B4 ztg?J{_4+5@Y4(); - EnvUICon = EnvironmentUIControlObj.GetComponent(); + paramContainer = ParameterContainerObj.GetComponent(); + eneContainer = EnemyContainerObj.GetComponent(); + blockContainer = SceneBlockContainerObj.GetComponent(); + EnvUICon = EnvironmentUIControlObj.GetComponent(); + targetCon = TargetControllerObj.GetComponent(); rayScript = GetComponent(); - // give default Reward to Reward value will be used. - nonReward = paramContainer.nonRewardDefault; - shootReward = paramContainer.shootRewardDefault; - shootWithoutReadyReward = paramContainer.shootWithoutReadyRewardDefault; - hitReward = paramContainer.hitRewardDefault; - winReward = paramContainer.winRewardDefault; - loseReward = paramContainer.loseRewardDefault; - killReward = paramContainer.killRewardDefault; - killBonusReward = paramContainer.killBonusRewardDefault; + PlayerController = this.transform.GetComponent(); // Environment parameters lockMouse = paramContainer.lockMouse; Damage = paramContainer.Damage; fireRate = paramContainer.fireRate; enemyNum = paramContainer.enemyNum; - timeLimit = paramContainer.timeLimit; lockCameraX = paramContainer.lockCameraX; lockCameraY = paramContainer.lockCameraY; //initialize remainTime - remainTime = (int)(timeLimit - Time.time + startTime); - - minEnemyAreaX = edgeLeft.transform.localPosition.x + 1.0f; - maxEnemyAreaX = edgeRight.transform.localPosition.x - 1.0f; - minEnemyAreaZ = edgeAgent_Enemy.transform.localPosition.z + 1.0f; - maxEnemyAreaZ = edgeUp.transform.localPosition.z - 1.0f; - - minAgentAreaX = edgeLeft.transform.localPosition.x + 1.0f; - maxAgentAreaX = edgeRight.transform.localPosition.x - 1.0f; - minAgentAreaZ = edgeDown.transform.localPosition.z + 1.0f; - maxAgentAreaZ = edgeAgent_Enemy.transform.localPosition.z - 1.0f; + // this agent's tag + myTag = gameObject.tag; } /* ----------此Update用于debug,Build前删除或注释掉!----------*/ @@ -127,30 +95,6 @@ private void Start() }*/ /* ----------此Update用于debug,Build前删除或注释掉!----------*/ - // --------------初始化--------------- - // randomInitEnemys随机生成enemy - public void randomInitEnemys(int EnemyNum) - { - for (int i = 0; i < EnemyNum; i++) - { - float randX = UnityEngine.Random.Range(minEnemyAreaX, maxEnemyAreaX); - float randZ = UnityEngine.Random.Range(minEnemyAreaZ, maxEnemyAreaZ); - int Y = 1; - Instantiate(enemyPrefab, new Vector3(randX, Y, randZ) + EnviromentObj.transform.position, Quaternion.identity, EnemyContainerObj.transform); - } - } - - // --------------初始化--------------- - // randomInitAgent随机位置初始化Agent - public void randomInitAgent() - { - float randX = UnityEngine.Random.Range(minAgentAreaX, maxAgentAreaX); - float randZ = UnityEngine.Random.Range(minAgentAreaZ, maxAgentAreaZ); - int Y = 1; - Vector3 initAgentLoc = new Vector3(randX, Y, randZ); - thisAgent.localPosition = initAgentLoc; - } - // ------------动作处理-------------- // moveAgent 用于模拟Input.GetAxis移动 public void moveAgent(int vertical, int horizontal) @@ -251,7 +195,7 @@ public void cameraControl(float Mouse_X, float Mouse_Y) //相机左右旋转时,是以Y轴为中心旋转的,上下旋转时,是以X轴为中心旋转的 - thisAgent.Rotate(Vector3.up * Mouse_X); + transform.Rotate(Vector3.up * Mouse_X); //Vector3.up相当于Vector3(0,1,0),CameraRotation.Rotate(Vector3.up * Mouse_X)相当于使CameraRotation对象绕y轴旋转Mouse_X个单位 //即相机左右旋转时,是以Y轴为中心旋转的,此时Mouse_X控制着值的大小 @@ -265,9 +209,10 @@ public void cameraControl(float Mouse_X, float Mouse_Y) } // GotKill 获得击杀时用于被呼出 - public void GotKill() + public void killRecord(Vector3 thiskillEnemyPosition) { enemyKillCount += 1; + killEnemyPosition = thiskillEnemyPosition; } // check gun is ready to shoot @@ -297,58 +242,26 @@ float ballistic() lastShootTime = Time.time; if (Physics.Raycast(ray, out hit, 100)) { - if (hit.collider.tag == "Enemy") + if (hit.collider.tag != myTag && hit.collider.tag != "Wall") { GameObject gotHitObj = hit.transform.gameObject;//获取受到Ray撞击的对象 - gotHitObj.GetComponent().ReactToHit(Damage, thisAgentObj); + gotHitObj.GetComponent().ReactToHit(Damage, gameObject); shoot = 0; - return hitReward; + return paramContainer.hitReward; } } shoot = 0; - return shootReward; + return paramContainer.shootReward; } else if (shoot != 0 && gunReadyToggle == false) { shoot = 0; - return shootWithoutReadyReward; + return paramContainer.shootWithoutReadyReward; } else { shoot = 0; - return nonReward; - } - } - - // destroyEnemy消除EnemyContainer内所有Enemy - public void destroyAllEnemys() - { - foreach (Transform childObj in EnemyContainerObj.transform) - { - if (childObj.tag == "Enemy") - { - Destroy(childObj.gameObject); - } - } - } - - // checkFinish 检查是否结束回合返回int值 - // 1 = success,2 = overtime,0 = notover - int checkFinish() - { - if (EnemyContainerObj.transform.childCount <= 0) - { - //成功击杀所有Enemy - return 1; - } - else if (Time.time - startTime >= timeLimit) - { - //超时失败 - return 2; - } - else - { - return 0; + return paramContainer.nonReward; } } @@ -363,7 +276,7 @@ int getEnemyNum() { Vector3 thisEnemyPosition = EnemyObj.transform.localPosition; Vector3 thisEnemyScale = EnemyObj.transform.localScale; - Vector3 MyselfPosition = thisAgent.localPosition; + Vector3 MyselfPosition = transform.localPosition; //探测到Agent为自己时的处理 if (thisEnemyPosition == MyselfPosition) @@ -389,7 +302,7 @@ int enemyNumDiff() // ------------Reward-------------- // rewardCalculate 计算本动作的Reward - public float rewardCalculate() + public float rewardCalculate(float sceneReward) { float epreward = 0f; // 击杀reward判断 @@ -397,10 +310,8 @@ public float rewardCalculate() { for (int i = 0; i < enemyKillCount; i++) { - epreward += killReward; - nonReward += killBonusReward; - shootReward += killBonusReward; - shootWithoutReadyReward += killBonusReward; + // get + epreward += targetCon.killReward(killEnemyPosition); } enemyKillCount = 0; } @@ -409,7 +320,7 @@ public float rewardCalculate() enemyKillCount = 0; } // 射击动作reward判断 - epreward += ballistic(); + epreward += ballistic() + sceneReward; return epreward; } @@ -423,32 +334,33 @@ public override void OnEpisodeBegin() { Cursor.lockState = CursorLockMode.Locked; // hide and lock the mouse } - //iniCharts(); //thisAgentObj.name = thisAgentObj.GetInstanceID().ToString(); - destroyAllEnemys(); - startTime = Time.time;// Reset StartTime as now time - randomInitAgent(); - randomInitEnemys(enemyNum); + targetCon.rollNewScene(); + paramContainer.resetTimeBonusReward(); nowEnemyNum = getEnemyNum(); // Reset Enemy number // give default Reward to Reward value will be used. - EnvUICon.initChart(); + if (paramContainer.chartOn) + { + EnvUICon.initChart(); + } } - // ML-AGENTS处理-------------------------------------------------------------------------------------------ML-AGENTS // 观察情报 public override void CollectObservations(VectorSensor sensor) { - //List enemyLDisList = RaySensors.enemyLDisList;// All Enemy Lside Distances //List enemyRDisList = RaySensors.enemyRDisList;// All Enemy Rside Distances rayScript.updateRayInfo(); - float[] myObserve = { thisAgent.localPosition.x, thisAgent.localPosition.y, thisAgent.localPosition.z, thisAgent.rotation.w }; + float[] myObserve = { transform.localPosition.x, transform.localPosition.y, transform.localPosition.z, transform.rotation.w }; float[] rayTagResult = rayScript.rayTagResult;// 探测用RayTag结果 float[](raySensorNum,1) float[] rayDisResult = rayScript.rayDisResult; // 探测用RayDis结果 float[](raySensorNum,1) + float[] targetStates = targetCon.getTargetStates(); // targettype, target x,y,z, firebasesAreaDiameter + //float[] focusEnemyObserve = RaySensors.focusEnemyInfo;// 最近的Enemy情报 float[](3,1) MinEnemyIndex,x,z //sensor.AddObservation(allEnemyNum); // 敌人数量 int + sensor.AddObservation(targetStates);// targettype, target x,y,z, firebasesAreaDiameter sensor.AddObservation(myObserve); // 自机位置xyz+朝向 float[](4,1) sensor.AddObservation(rayTagResult); // 探测用RayTag结果 float[](raySensorNum,1) sensor.AddObservation(rayDisResult); // 探测用RayDis结果 float[](raySensorNum,1) @@ -470,42 +382,34 @@ public override void OnActionReceived(ActionBuffers actionBuffers) float Mouse_X = actionBuffers.ContinuousActions[0]; if (vertical == 2) vertical = -1; if (horizontal == 2) horizontal = -1; - remainTime = (int)(timeLimit - Time.time + startTime); //应用输入 shoot = mouseShoot; cameraControl(Mouse_X, 0); moveAgent(vertical, horizontal); - float thisRoundReward = rewardCalculate(); //判断结束 - finishedState = checkFinish(); - if (finishedState == 1) + float sceneReward = 0f; + (finishedState, sceneReward) = targetCon.checkOverAndRewards(); + float thisRoundReward = rewardCalculate(sceneReward); + if (paramContainer.chartOn) { - //Win Finished - EP += 1; - EnvUICon.updateChart(winReward); - SetReward(winReward); - Debug.Log("reward = " + winReward); - EndEpisode(); + EnvUICon.updateChart(thisRoundReward); } - else if (finishedState == 2) + //Debug.Log("reward = " + thisRoundReward); + if (finishedState != (int)TargetController.EndType.Running) { - //Lose Finished + // Win or lose Finished + Debug.Log("Finish reward = " + thisRoundReward); EP += 1; - EnvUICon.updateChart(loseReward); - SetReward(loseReward); - Debug.Log("reward = " + loseReward); EndEpisode(); } else { // game not over yet step += 1; - EnvUICon.updateChart(thisRoundReward); - SetReward(thisRoundReward); - Debug.Log("reward = " + thisRoundReward); } + SetReward(thisRoundReward); } // ML-AGENTS处理-------------------------------------------------------------------------------------------ML-AGENTS diff --git a/Assets/Script/InGame/Enemy.cs b/Assets/Script/InGame/Enemy.cs index f9f2208..3630ce6 100644 --- a/Assets/Script/InGame/Enemy.cs +++ b/Assets/Script/InGame/Enemy.cs @@ -1,40 +1,84 @@ using System.Collections; using System.Collections.Generic; +using UnityEditor; using UnityEngine; public class Enemy : MonoBehaviour { - float EnemyHP = 100; - public float EnemyMaxHP = 100; + //扇形角度 + //[SerializeField] private float angle = 80f; + //扇形半径 + //[SerializeField] private float radius = 3.5f; + //物体B + [SerializeField] private Transform b; + + private bool flag; + /// + /// 判断target是否在扇形区域内 + /// + /// 扇形角度 + /// 扇形半径 + /// 攻击者的transform信息 + /// 目标 + /// 目标target在扇形区域内返回true 否则返回false void Start() { - EnemyHP = EnemyMaxHP; } // Update is called once per frame void Update() { - detactDeath(); + //detactDeath(); + //flag = IsInRange(angle, radius, transform, b); } - private void detactDeath() + + public bool IsInRange(float sectorAngle, float sectorRadius, Transform attacker, Transform target) { - if (EnemyHP <= 0){ - Destroy(this.gameObject); - } + //攻击者位置指向目标位置的向量 + Vector3 direction = target.position - attacker.position; + //点乘积结果 + float dot = Vector3.Dot(direction.normalized, transform.forward); + //反余弦计算角度 + float offsetAngle = Mathf.Acos(dot) * Mathf.Rad2Deg; + return offsetAngle < sectorAngle * .5f && direction.magnitude < sectorRadius; } - public void ReactToHit(float Damage,GameObject damageSource) + /* + private void OnDrawGizmos() { - EnemyHP -= Damage; - Debug.Log("HP:"+ EnemyHP); - if(EnemyHP <= 0) + Handles.color = flag ? Color.cyan : Color.red; + + float x = radius * Mathf.Sin(angle / 2f * Mathf.Deg2Rad); + float y = Mathf.Sqrt(Mathf.Pow(radius, 2f) - Mathf.Pow(x, 2f)); + Vector3 a = new Vector3(transform.position.x - x, transform.position.y, transform.position.z + y); + Vector3 b = new Vector3(transform.position.x + x, transform.position.y, transform.position.z + y); + + Handles.DrawLine(transform.position, a); + Handles.DrawLine(transform.position, b); + + float half = angle / 2; + for (int i = 0; i < half; i++) { - damageSource.GetComponent().GotKill(); - Destroy(this.gameObject); + x = radius * Mathf.Sin((half - i) * Mathf.Deg2Rad); + y = Mathf.Sqrt(Mathf.Pow(radius, 2f) - Mathf.Pow(x, 2f)); + a = new Vector3(transform.position.x - x, transform.position.y, transform.position.z + y); + x = radius * Mathf.Sin((half - i - 1) * Mathf.Deg2Rad); + y = Mathf.Sqrt(Mathf.Pow(radius, 2f) - Mathf.Pow(x, 2f)); + b = new Vector3(transform.position.x - x, transform.position.y, transform.position.z + y); + + Handles.DrawLine(a, b); + } + for (int i = 0; i < half; i++) + { + x = radius * Mathf.Sin((half - i) * Mathf.Deg2Rad); + y = Mathf.Sqrt(Mathf.Pow(radius, 2f) - Mathf.Pow(x, 2f)); + a = new Vector3(transform.position.x + x, transform.position.y, transform.position.z + y); + x = radius * Mathf.Sin((half - i - 1) * Mathf.Deg2Rad); + y = Mathf.Sqrt(Mathf.Pow(radius, 2f) - Mathf.Pow(x, 2f)); + b = new Vector3(transform.position.x + x, transform.position.y, transform.position.z + y); + + Handles.DrawLine(a, b); } } - public float getnowHP() - { - return EnemyHP; - } + */ } diff --git a/Assets/Script/InGame/EnemyContainer.cs b/Assets/Script/InGame/EnemyContainer.cs new file mode 100644 index 0000000..5559744 --- /dev/null +++ b/Assets/Script/InGame/EnemyContainer.cs @@ -0,0 +1,67 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class EnemyContainer : MonoBehaviour +{ + public GameObject enemyPrefab; + public GameObject EnvironmentObj; + public GameObject TargetControllerObj; + + private TargetController targetCon; + + private void Start() + { + targetCon = TargetControllerObj.GetComponent(); + } + + + // initialize enemy by random + public void randomInitEnemys(int EnemyNum) + { + for (int i = 0; i < EnemyNum; i++) + { + float randX = UnityEngine.Random.Range(targetCon.minEnemyAreaX, targetCon.maxEnemyAreaX); + float randZ = UnityEngine.Random.Range(targetCon.minEnemyAreaZ, targetCon.maxEnemyAreaZ); + int enemyY = 1; + initEnemyAtHere(new Vector3(randX, enemyY, randZ)); + } + } + + // initialize enemy by random but not in block area + public void randomInitEnemysExcept(int enemyNum,Vector3 blockPosition,float sceneSize) + { + float randX = 0f; + float randZ = 0f; + for (int i = 0; i < enemyNum; i++) + { + randX = UnityEngine.Random.Range(targetCon.minEnemyAreaX, targetCon.maxEnemyAreaX); + randZ = UnityEngine.Random.Range(targetCon.minEnemyAreaZ, targetCon.maxEnemyAreaZ); + while (Vector3.Distance(blockPosition, new Vector3(randX,0f,randZ)) < sceneSize/2) + { + // while in scene area then respawn + Debug.Log("spawn enemy in area, re:roll"); + randX = UnityEngine.Random.Range(targetCon.minEnemyAreaX, targetCon.maxEnemyAreaX); + randZ = UnityEngine.Random.Range(targetCon.minEnemyAreaZ, targetCon.maxEnemyAreaZ); + } + + int enemyY = 1; + initEnemyAtHere(new Vector3(randX, enemyY, randZ)); + } + } + + // initialize enemy to thisPosition + public void initEnemyAtHere(Vector3 thisPosition) + { + Instantiate(enemyPrefab, thisPosition + EnvironmentObj.transform.position, Quaternion.identity, this.transform); + } + + // destroyEnemy delete enemyContainer's all enemy + public void destroyAllEnemys() + { + foreach (Transform childObj in this.transform) + { + childObj.GetComponent().destroyMe(); + } + } +} diff --git a/Assets/Script/InGame/EnemyHPBar.cs.meta b/Assets/Script/InGame/EnemyContainer.cs.meta similarity index 83% rename from Assets/Script/InGame/EnemyHPBar.cs.meta rename to Assets/Script/InGame/EnemyContainer.cs.meta index 5216267..edc1fbd 100644 --- a/Assets/Script/InGame/EnemyHPBar.cs.meta +++ b/Assets/Script/InGame/EnemyContainer.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b293d3b541b20b7448f3ca4d09a9c38c +guid: 0350ec966da42b44699fee7309a89ac7 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Script/InGame/EnvironmentUIControl.cs b/Assets/Script/InGame/EnvironmentUIControl.cs new file mode 100644 index 0000000..76930fb --- /dev/null +++ b/Assets/Script/InGame/EnvironmentUIControl.cs @@ -0,0 +1,114 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using TMPro; +using UnityEngine; +using UnityEngine.UI; +using XCharts.Runtime; + +public class EnvironmentUIControl : MonoBehaviour +{ + public GameObject TargetControllerObj; + public GameObject ParameterContainerObj; + public GameObject GroundCanvasObj; + public GameObject chartObj; + public TextMeshProUGUI remainTimeText; + public TextMeshProUGUI winLoseText; + public float resultTimeout = 1f; + public GameObject gaugeImgObj; + + private LineChart realTimeRewardChart = null; + private TargetController targetController; + private ParameterContainer paramContainer; + private Image gaugeImg; + private float overTime = 0f; + private int step = 0; + private bool resultActive = false; + + // Start is called before the first frame update + void Start() + { + targetController = TargetControllerObj.GetComponent(); + paramContainer = ParameterContainerObj.GetComponent(); + gaugeImg = gaugeImgObj.GetComponent(); + } + + // Update is called once per frame + void Update() + { + int remainTime = Convert.ToInt32(targetController.startTime + paramContainer.timeLimit - Time.time); + remainTimeText.text = "RemainTime:" + remainTime.ToString(); + if (resultActive && Time.time - overTime >= resultTimeout) + { + // while result is active and show time over timeOut + // clear the result + Debug.Log("clear result"); + winLoseText.text = ""; + winLoseText.color = Color.white; + resultActive = false; + } + } + public void updateChart(float reward) + { + step += 1; + realTimeRewardChart.AddXAxisData(Convert.ToString(step)); + realTimeRewardChart.AddData(0, reward); + } + + public void initChart() + { + if (paramContainer.chartOn && realTimeRewardChart == null) + { + Vector3 chartPos = new Vector3(-210f, 90f, 0f) * GroundCanvasObj.transform.localScale.x; + realTimeRewardChart = chartObj.AddComponent(); + realTimeRewardChart.Init(); + } + realTimeRewardChart.RemoveData(); + realTimeRewardChart.AddSerie("Rewards"); + } + + // show result in UI + public void showResult(int resultState) + { + switch (resultState) + { + case (int)TargetController.EndType.Win: + //Win + Debug.Log("win"); + winLoseText.text = "Win"; + winLoseText.color = Color.green; + overTime = Time.time; + resultActive = true; + break; + case (int)TargetController.EndType.Lose: + //lose + Debug.Log("lose"); + winLoseText.text = "Lose"; + winLoseText.color = Color.red; + overTime = Time.time; + resultActive = true; + break; + default: + break; + } + } + + // update firebases target state gauge + public void updateTargetGauge(float firebasesBelong, float belongMaxPoint) + { + if (firebasesBelong >= 0) + { + gaugeImgObj.transform.localPosition = new Vector3(25f, 0, 0); + gaugeImg.color = Color.blue; + gaugeImg.fillOrigin = 0; + gaugeImg.fillAmount = firebasesBelong / belongMaxPoint; + } + else + { + gaugeImgObj.transform.localPosition = new Vector3(-25f, 0, 0); + gaugeImg.color = Color.red; + gaugeImg.fillOrigin = 1; + gaugeImg.fillAmount = -firebasesBelong / belongMaxPoint; + } + } +} diff --git a/Assets/EnviromentUIControl.cs.meta b/Assets/Script/InGame/EnvironmentUIControl.cs.meta similarity index 100% rename from Assets/EnviromentUIControl.cs.meta rename to Assets/Script/InGame/EnvironmentUIControl.cs.meta diff --git a/Assets/Script/InGame/EnemyHPBar.cs b/Assets/Script/InGame/HPBar.cs similarity index 69% rename from Assets/Script/InGame/EnemyHPBar.cs rename to Assets/Script/InGame/HPBar.cs index 849f275..4a135c5 100644 --- a/Assets/Script/InGame/EnemyHPBar.cs +++ b/Assets/Script/InGame/HPBar.cs @@ -3,22 +3,22 @@ using UnityEngine; using UnityEngine.UI; -public class EnemyHPBar : MonoBehaviour +public class HPBar : MonoBehaviour { - GameObject EnemyOBJ; + GameObject thisObj; GameObject BGOBJ; GameObject gaugeImgOBJ; - + void Start() { - EnemyOBJ = transform.parent.gameObject; + thisObj = transform.parent.gameObject; BGOBJ = transform.GetChild(0).gameObject; gaugeImgOBJ = BGOBJ.transform.GetChild(0).gameObject; Vector3 v = Camera.main.transform.position - transform.position; v.x = v.z = 0.0f; transform.LookAt(Camera.main.transform.position - v); - transform.Rotate(0,180,0); + transform.Rotate(0, 180, 0); } void Update() @@ -26,10 +26,10 @@ void Update() Vector3 v = Camera.main.transform.position - transform.position; v.x = v.z = 0.0f; transform.LookAt(Camera.main.transform.position - v); - transform.Rotate(0,180,0); + transform.Rotate(0, 180, 0); - float maxHP = EnemyOBJ.GetComponent().EnemyMaxHP; - float nowHP = EnemyOBJ.GetComponent().getnowHP(); + float maxHP = thisObj.GetComponent().MaxHP; + float nowHP = thisObj.GetComponent().getnowHP(); gaugeImgOBJ.GetComponent().fillAmount = nowHP / maxHP; } } diff --git a/Assets/parameterContainer.cs.meta b/Assets/Script/InGame/HPBar.cs.meta similarity index 83% rename from Assets/parameterContainer.cs.meta rename to Assets/Script/InGame/HPBar.cs.meta index fa66c21..ecfad9c 100644 --- a/Assets/parameterContainer.cs.meta +++ b/Assets/Script/InGame/HPBar.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: ec48577b239fca544a51411c6c49b68a +guid: 925561829acf6c94097de75bf186b561 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Script/InGame/ParameterContainer.cs b/Assets/Script/InGame/ParameterContainer.cs new file mode 100644 index 0000000..09440d8 --- /dev/null +++ b/Assets/Script/InGame/ParameterContainer.cs @@ -0,0 +1,130 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ParameterContainer : MonoBehaviour +{ + public GameObject targetConObj; + public GameObject blockConObj; + public GameObject agentObj; + private TargetController targetCon; + private SceneBlockContainer blockCont; + private float agentDistance; + private int agentInArea; + + + [Header("Env")] + public bool lockMouse = false; + public float Damage = 50; // damage to enemy + public float fireRate = 0.5f; + public int enemyNum = 3; + public int timeLimit = 30; + public bool lockCameraX = false; + public bool lockCameraY = true; + public bool chartOn = false; + + + [Header("Dynamic Defaut Rewards")] + [Tooltip("Hit Enemy reward")] + public float hitRewardDefault = 30.0f; + [Tooltip("Episode Win reward")] + public float winRewardDefault = 50.0f; + [Tooltip("Enemy down reward")] + public float killRewardDefault = 40.0f; + [Tooltip("Enemy down in area Reward")] + public float killInAreaEnemyRewardDefault = 80.0f; + [Tooltip("stay in firebasesArea reward")] + public float inAreaRewardDefault = 1.0f; + [Tooltip("free left time bonus reward. ALLR + leftTime * r")] + public float freeTimeBonusPerSec = 1.0f; + [Tooltip("target left time bonus reward. ALLR + leftTime * r")] + public float targetTimeBonusPerSec = 3.0f; + [Tooltip("in area left time bonus reward. ALLR + leftTime * r")] + public float areaTimeBonusPerSec = 1.0f; + [Tooltip("distance reward reward = r*(1-(nowDis/startDis))")] + public float distanceReward = 1.0f; + + [Header("Dynamic Rewards")] + [Tooltip("Hit Enemy reward")] + public float hitReward = 30.0f; + [Tooltip("Enemy down reward")] + public float killReward = 40.0f; + [Tooltip("Episode Win reward")] + public float winReward = 50.0f; + [Tooltip("Enemy down in area Reward")] + public float killInAreaEnemyReward = 80.0f; + [Tooltip("stay in firebasesArea reward")] + public float inAreaReward = 1.0f; + + + + [Header("Static Rewards")] + [Tooltip("Nothing happened reward")] + public float nonReward = -0.05f; + [Tooltip("Episode Lose reward")] + public float loseReward = -0.05f; + [Tooltip("Agent Do shoot action reward")] + public float shootReward = -0.1f; + [Tooltip("Agent Do shoot action but gun is not read")] + public float shootWithoutReadyReward = -0.15f; + [Tooltip("Kill bonus reward stack to nothing happend reward")] + public float killBonusReward = 0.0f; + [Header("Penalty Rewards")] + [Tooltip("Speed Penalty Reward")] + public float speedPanalty = 0f; + [Tooltip("view Panalty Reward")] + public float viewPanalty = 0f; + + private float targetTimeBonus = 0f; + private float areaTimeBonus = 0f; + private float freeTimeBonus = 0f; + private float targetInAreaTime = 0f; + private float lastFrameTime = 0f; + + private void Start() + { + targetCon = targetConObj.GetComponent(); + blockCont = blockConObj.GetComponent(); + areaTimeBonus = areaTimeBonusPerSec * timeLimit; + freeTimeBonus = freeTimeBonusPerSec * timeLimit; + targetTimeBonus = targetTimeBonusPerSec * timeLimit; + } + + private void Update() + { + if (targetCon.targetTypeInt != (int)TargetController.Targets.Free) + { + (agentDistance, agentInArea) = blockCont.getAgentTargetDistanceAndInside(agentObj.transform.position); + // attack goto or defence target + if (agentInArea == 1) + { + // agent out of area + targetInAreaTime += Time.time - lastFrameTime; + } + areaTimeBonus = areaTimeBonusPerSec * (targetCon.leftTime + targetInAreaTime); + freeTimeBonus = freeTimeBonusPerSec * targetCon.leftTime; + targetTimeBonus = targetTimeBonusPerSec * targetCon.leftTime; + lastFrameTime = Time.time; + } + else + { + // free target + areaTimeBonus = areaTimeBonusPerSec * targetCon.leftTime; + freeTimeBonus = freeTimeBonusPerSec * targetCon.leftTime; + targetTimeBonus = targetTimeBonusPerSec * targetCon.leftTime; + } + + hitReward = hitRewardDefault + freeTimeBonus; + killReward = killRewardDefault + freeTimeBonus; + winReward = winRewardDefault + targetTimeBonus; + killInAreaEnemyReward = killInAreaEnemyRewardDefault + targetTimeBonus; + inAreaReward = inAreaRewardDefault + areaTimeBonus; + } + + public void resetTimeBonusReward() + { + areaTimeBonus = areaTimeBonusPerSec * timeLimit; + freeTimeBonus = freeTimeBonusPerSec * timeLimit; + targetInAreaTime = 0f; + } +} diff --git a/Assets/Script/InGame/ParameterContainer.cs.meta b/Assets/Script/InGame/ParameterContainer.cs.meta new file mode 100644 index 0000000..e2061fa --- /dev/null +++ b/Assets/Script/InGame/ParameterContainer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cab5ee46e8af1134b840e91077e7592b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/RaySensors.cs b/Assets/Script/InGame/RaySensors.cs index b05937e..03ddcf3 100644 --- a/Assets/Script/InGame/RaySensors.cs +++ b/Assets/Script/InGame/RaySensors.cs @@ -31,6 +31,7 @@ public class RaySensors : MonoBehaviour public float[] rayDisResult; [System.NonSerialized] public int totalRayNum; + private string myTag = ""; GameObject[] linesOBJ; GameObject[] rayInfoOBJ; LineRenderer[] lineRenderers; @@ -39,7 +40,7 @@ public class RaySensors : MonoBehaviour private void Start() { - + myTag = gameObject.tag; totalRayNum = halfOuterRayNum * 2 + focusRayNum; rayTagResult = new float[totalRayNum]; rayDisResult = new float[totalRayNum]; @@ -63,15 +64,17 @@ private void Start() } } - static int tagToInt(string tag) + public int tagToInt(string tag) { switch (tag) { case "Wall": return 1; - case "Enemy": - return 2; default: + if(tag != myTag) + { + return 2; + } return 0; } } diff --git a/Assets/Script/InGame/SceneBlock.cs b/Assets/Script/InGame/SceneBlock.cs new file mode 100644 index 0000000..f1ededf --- /dev/null +++ b/Assets/Script/InGame/SceneBlock.cs @@ -0,0 +1,197 @@ +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using UnityEngine; + +public class SceneBlock : MonoBehaviour +{ + public GameObject FirebasesAreaObj; + public GameObject EnemyContainerObj; + public float group1InareaNum = 0; + public float group2InareaNum = 0; + public float belongRatio = 0; + public float blockSize = 10f; + public Vector3 firebasesAreaPosition; + public float firebasesAreaScale; + public float firebasesAreaDiameter; + + public enum SceneType { Go, Attack, Defence } + public SceneType sceneType; + public bool isDestroyed = false; + + // firebase state + public string group1Tag = "Player"; + public string group2Tag = "Enemy"; + public float belongMaxPoint = 10f; + public float firebasesBelong; // -10 mean's belon to group2Tag 10 = belon to group1Tag + public float addPointInterval = 0.1f; // add point every addPointInterval scecond + public float stayTimeNeeded = 5f; // howmany time to stay at area to get this area 0->10 + + private float addPointEachInterval; // add point in each interval + private float intervalStart; + private GameObject EnvironmentObj; + public GameObject[] group1Objs; + public GameObject[] group2Objs; + + // Start is called before the first frame update + void Start() + { + firebasesAreaPosition = transform.position + FirebasesAreaObj.transform.position; + firebasesAreaScale = FirebasesAreaObj.transform.localScale.x; + firebasesAreaDiameter = firebasesAreaScale * blockSize; + firebasesBelong = -belongMaxPoint; + addPointEachInterval = belongMaxPoint / (stayTimeNeeded / addPointInterval); + intervalStart = Time.time; + } + + // Update is called once per frame + void Update() + { + if (Time.time - intervalStart >= addPointInterval) + { + group1InareaNum = getInAreaNumber(group1Tag); + group2InareaNum = getInAreaNumber(group2Tag); + belongRatio = group1InareaNum - group2InareaNum; + if (belongRatio > 0) + { + // group 1 have the advantage! + firebasesBelong += addPointEachInterval; + if (firebasesBelong >= belongMaxPoint) + { + firebasesBelong = belongMaxPoint; + } + } + else if (belongRatio < 0) + { + // group 2 have the advantage! + firebasesBelong -= addPointEachInterval; + if (firebasesBelong <= -belongMaxPoint) + { + firebasesBelong = -belongMaxPoint; + } + } + intervalStart = Time.time; + } + } + + //Initialize thi scene block should be excuted after enemy created + public void initBlock(GameObject envObj) + { + //Buffer all Player or enemy obj int this environment to list + EnvironmentObj = envObj; + GameObject[] allGroup1Objs = GameObject.FindGameObjectsWithTag(group1Tag); + GameObject[] allGroup2Objs = GameObject.FindGameObjectsWithTag(group2Tag); + List group1ObjsList = new List(); + List group2ObjsList = new List(); + foreach (GameObject obj in allGroup1Objs) + { + if (obj.transform.root.gameObject == envObj && !obj.GetComponent().isDead) + { + group1ObjsList.Add(obj); + } + } + foreach (GameObject obj in allGroup2Objs) + { + if(obj.transform.root.gameObject == envObj && !obj.GetComponent().isDead) + { + group2ObjsList.Add(obj); + } + } + group1Objs = group1ObjsList.ToArray(); + group2Objs = group2ObjsList.ToArray(); + } + + //check game over 0=notover 1=win + public int checkOver() + { + return 0; + } + + // get in area player number by tag + public float getInAreaNumber(string thisTag) + { + float inAreaNum = 0; + float dist = 0f; + float isInarea = 0f; + int index = 0; + if (thisTag == group1Tag) + { + foreach(GameObject obj in group1Objs) + { + // if object is dead then delete it from list + if (obj == null) + { + // delete null object from list + List group1ObjsList = new List(group1Objs); + group1ObjsList.RemoveAt(index); + group1Objs = group1ObjsList.ToArray(); + } + else + { + (dist, isInarea) = getDist_inArea(obj.transform.position); + if (isInarea != 0f) + { + inAreaNum += 1; + } + } + index++; + } + }else if(thisTag == group2Tag) + { + foreach(GameObject obj in group2Objs) + { + // if object is dead then delete it from list + if (obj == null) + { + // delete null object from list + List group2ObjsList = new List(group2Objs); + group2ObjsList.RemoveAt(index); + group2Objs = group2ObjsList.ToArray(); + } + else + { + (dist, isInarea) = getDist_inArea(obj.transform.position); + if (isInarea != 0f) + { + inAreaNum += 1; + } + } + index++; + } + } + else + { + Debug.LogError("SceneBlock.getinAreaNumber:TagError"); + } + return inAreaNum; + } + + // get this position and target's distance and is in firebase area + public (float, int) getDist_inArea(Vector3 thisPosition) + { + thisPosition.y = FirebasesAreaObj.transform.position.y; + float dist = Vector3.Distance(thisPosition, FirebasesAreaObj.transform.position) - (firebasesAreaDiameter/2); + int isinarea = 0; + if (dist <= 0) + { + dist = 0f; + isinarea = 1; + } + else + { + isinarea = 0; + } + return (dist, isinarea); + } + + //destroy this block + public void destroyMe() + { + Destroy(this.gameObject); + foreach (Transform childObj in EnemyContainerObj.transform) + { + childObj.GetComponent().destroyMe(); + } + isDestroyed = true; + } +} diff --git a/Assets/Script/InGame/SceneBlock.cs.meta b/Assets/Script/InGame/SceneBlock.cs.meta new file mode 100644 index 0000000..86f3f51 --- /dev/null +++ b/Assets/Script/InGame/SceneBlock.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8e1ae09061637cf4ead72321c221f783 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/SceneBlockContainer.cs b/Assets/Script/InGame/SceneBlockContainer.cs new file mode 100644 index 0000000..00d19cc --- /dev/null +++ b/Assets/Script/InGame/SceneBlockContainer.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class SceneBlockContainer : MonoBehaviour +{ + public float sceneSize = 10f; + public GameObject EnvironmentObj; + public GameObject[] attackBlockPrefabs = new GameObject[1]; + public GameObject[] goBlockPrefabs = new GameObject[1]; + public GameObject[] defencePrefabs = new GameObject[1]; + + private GameObject thisBlockObj; + public SceneBlock thisBlock; + + private void Start() + { + } + // create block random + public void createNewBlock(int targetType, int blockType, Vector3 blockPosition,string tag1,string tag2) + { + // check if thisBlock is deleted + if (thisBlockObj != null) + { + // delete thisBlock + Debug.LogWarning("Block not clear!"); + destroyBlock(); + } + // choose target type + switch (targetType) + { + case (int)TargetController.Targets.Go: + // goto + thisBlockObj = Instantiate(goBlockPrefabs[blockType], blockPosition + EnvironmentObj.transform.position, Quaternion.identity, transform); + thisBlock = thisBlockObj.GetComponent(); + thisBlock.group1Tag = tag1; + thisBlock.group2Tag = tag2; + sceneSize = thisBlock.blockSize; + break; + case (int)TargetController.Targets.Attack: + // attack + thisBlockObj = Instantiate(attackBlockPrefabs[blockType], blockPosition+ EnvironmentObj.transform.position, Quaternion.identity, transform); + thisBlock = thisBlockObj.GetComponent(); + thisBlock.group1Tag = tag1; + thisBlock.group2Tag = tag2; + sceneSize = thisBlock.blockSize; + break; + case (int)TargetController.Targets.Defence: + // defence + thisBlockObj = Instantiate(defencePrefabs[blockType], blockPosition + EnvironmentObj.transform.position, Quaternion.identity, transform); + thisBlock = thisBlockObj.GetComponent(); + thisBlock.group1Tag = tag1; + thisBlock.group2Tag = tag2; + sceneSize = thisBlock.blockSize; + break; + } + } + + // delete thisBlock + public void destroyBlock() + { + if (thisBlock != null) + { + thisBlock.destroyMe(); + } + thisBlockObj = null; + thisBlock = null; + } + + public (float, int) getAgentTargetDistanceAndInside(Vector3 agentPosition) + { + return thisBlock.getDist_inArea(agentPosition); + } + + +} diff --git a/Assets/Script/InGame/SceneBlockContainer.cs.meta b/Assets/Script/InGame/SceneBlockContainer.cs.meta new file mode 100644 index 0000000..706e442 --- /dev/null +++ b/Assets/Script/InGame/SceneBlockContainer.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 94687c2b580b85d4a8ced43c8cfc7bf2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/TargetController.cs b/Assets/Script/InGame/TargetController.cs new file mode 100644 index 0000000..1d476fc --- /dev/null +++ b/Assets/Script/InGame/TargetController.cs @@ -0,0 +1,379 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Random = UnityEngine.Random; + +public class TargetController : MonoBehaviour +{ + public GameObject EnvironmentObj; + public GameObject AgentObj; + public GameObject SceneBlockContainerObj; + public GameObject EnemyContainerObj; + public GameObject ParameterContainerObj; + public GameObject EnvironmentUIObj; + public GameObject WorldUIObj; + // area + public GameObject edgeUp; + public GameObject edgeDown; + public GameObject edgeLeft; + public GameObject edgeRight; + public GameObject edgeAgent_Enemy; + + //group + public string group1Tag = "Player"; + public string group2Tag = "Enemy"; + + public float minEnemyAreaX; + [System.NonSerialized] public float maxEnemyAreaX; + [System.NonSerialized] public float minEnemyAreaZ; + [System.NonSerialized] public float maxEnemyAreaZ; + [System.NonSerialized] public float minAgentAreaX; + [System.NonSerialized] public float maxAgentAreaX; + [System.NonSerialized] public float minAgentAreaZ; + [System.NonSerialized] public float maxAgentAreaZ; + [System.NonSerialized] public float startTime = 0f; + [System.NonSerialized] public float leftTime = 0f; + + [SerializeField, Range(0f, 1f)] public float attackProb = 0.2f; + [SerializeField, Range(0f, 1f)] public float gotoProb = 0.2f; + [SerializeField, Range(0f, 1f)] public float defenceProb = 0.2f; + + [System.NonSerialized] public int targetTypeInt; + public enum Targets { Free, Go, Attack, Defence, Num };// Num is use for get total target bumber + public enum EndType { Win, Lose, Running, Num }; + [System.NonSerialized] public int targetNum = 0; + private Dictionary oneHotRarget = new Dictionary(); + + private float freeProb; + private float sceneSize; + private float lastDistance; + private Vector3 targetPosition; + private Vector3 targetLocalPosition; + private bool firstRewardFlag = true; + private SceneBlockContainer blockCont; + private EnemyContainer enemyCont; + private EnvironmentUIControl envUICon; + private ParameterContainer paramCon; + private CharacterController agentCharaCon; + private WorldUIController worldUICon; + + // Start is called before the first frame update + void Start() + { + minEnemyAreaX = edgeLeft.transform.localPosition.x + 1.0f; + maxEnemyAreaX = edgeRight.transform.localPosition.x - 1.0f; + minEnemyAreaZ = edgeAgent_Enemy.transform.localPosition.z + 1.0f; + maxEnemyAreaZ = edgeUp.transform.localPosition.z - 1.0f; + + minAgentAreaX = edgeLeft.transform.localPosition.x + 1.0f; + maxAgentAreaX = edgeRight.transform.localPosition.x - 1.0f; + minAgentAreaZ = edgeDown.transform.localPosition.z + 1.0f; + maxAgentAreaZ = edgeAgent_Enemy.transform.localPosition.z - 1.0f; + + blockCont = SceneBlockContainerObj.GetComponent(); + envUICon = EnvironmentUIObj.GetComponent(); + enemyCont = EnemyContainerObj.GetComponent(); + agentCharaCon = AgentObj.GetComponent(); + paramCon = ParameterContainerObj.GetComponent(); + worldUICon = WorldUIObj.GetComponent(); + freeProb = 1 - attackProb - gotoProb - defenceProb; + targetNum = (int)Targets.Num; + if (freeProb < 0) + { + Debug.LogError("target percentage wrong"); + } + + // initialize a simple fake onehot encoder. + for (int i = 0; i < targetNum; i++) + { + float[] onehotList = new float[targetNum]; + for (int j = 0; j < targetNum; j++) + { + onehotList[j] = 0; + } + onehotList[i] = 1; + oneHotRarget.Add(i, onehotList); + } + } + + private void Update() + { + leftTime = paramCon.timeLimit - Time.time + startTime; + } + + public void rollNewScene() + { + startTime = Time.time;// Reset StartTime as now time + float randTargetType = UnityEngine.Random.Range(0f, 1f); + if (randTargetType <= gotoProb) + { + // goto target spawn + Debug.Log("GOTO THIS TARGET!"); + targetTypeInt = (int)Targets.Go; + int randBlockType = Random.Range(0, blockCont.goBlockPrefabs.Length); + // get choosed scene size + sceneSize = blockCont.goBlockPrefabs[randBlockType].GetComponent().blockSize; + float randX = UnityEngine.Random.Range(minEnemyAreaX + sceneSize + 1f, maxEnemyAreaX - sceneSize - 1f); + float randZ = UnityEngine.Random.Range(minEnemyAreaZ + sceneSize + 1f, maxEnemyAreaZ - sceneSize - 1f); + targetPosition = new Vector3(randX, 0f, randZ); + // Init Agent position + moveAgentToSpwanArea(); + // init scene block + blockCont.destroyBlock(); + blockCont.createNewBlock(targetTypeInt, randBlockType, targetPosition, group1Tag, group2Tag); + enemyCont.destroyAllEnemys(); + enemyCont.randomInitEnemysExcept(paramCon.enemyNum, targetPosition, sceneSize); + blockCont.thisBlock.initBlock(EnvironmentObj); + // set startDistance + firstRewardFlag = true; + } + else if (randTargetType > gotoProb && randTargetType <= gotoProb + attackProb) + { + // attack target spawn + Debug.Log("ATTACK!"); + targetTypeInt = (int)Targets.Attack; + int randBlockType = Random.Range(0, blockCont.attackBlockPrefabs.Length); + // get choosed scene size + sceneSize = blockCont.attackBlockPrefabs[randBlockType].GetComponent().blockSize; + float randX = UnityEngine.Random.Range(minEnemyAreaX + sceneSize + 1f, maxEnemyAreaX - sceneSize - 1f); + float randZ = UnityEngine.Random.Range(minEnemyAreaZ + sceneSize + 1f, maxEnemyAreaZ - sceneSize - 1f); + targetPosition = new Vector3(randX, 0f, randZ); + // Init Agent position + moveAgentToSpwanArea(); + // init scene block + blockCont.destroyBlock(); + blockCont.createNewBlock(targetTypeInt, randBlockType, targetPosition, group1Tag, group2Tag); + enemyCont.destroyAllEnemys(); + enemyCont.randomInitEnemysExcept(paramCon.enemyNum, targetPosition, sceneSize); + blockCont.thisBlock.initBlock(EnvironmentObj); + // set startDistance + firstRewardFlag = true; + } + else if (randTargetType > gotoProb + attackProb && randTargetType <= gotoProb + attackProb + defenceProb) + { + // defence target spawn + Debug.Log("DEFENCE!"); + targetTypeInt = (int)Targets.Defence; + int randBlockType = Random.Range(0, blockCont.attackBlockPrefabs.Length); + // get choosed scene size + sceneSize = blockCont.defencePrefabs[randBlockType].GetComponent().blockSize; + float randX = UnityEngine.Random.Range(minEnemyAreaX + sceneSize + 1f, maxEnemyAreaX - sceneSize - 1f); + float randZ = UnityEngine.Random.Range(minEnemyAreaZ + sceneSize + 1f, maxEnemyAreaZ - sceneSize - 1f); + targetPosition = new Vector3(randX, 0f, randZ); + // Init Agent position + moveAgentTo(targetPosition); + // init scene block + blockCont.destroyBlock(); + blockCont.createNewBlock(targetTypeInt, randBlockType, targetPosition, group1Tag, group2Tag); + enemyCont.destroyAllEnemys(); + enemyCont.randomInitEnemysExcept(paramCon.enemyNum, targetPosition, sceneSize); + blockCont.thisBlock.initBlock(EnvironmentObj); + // set startDistance + firstRewardFlag = true; + } + else + { + Debug.Log("Free"); + targetTypeInt = (int)Targets.Free; + enemyCont.destroyAllEnemys(); + enemyCont.randomInitEnemys(paramCon.enemyNum); + moveAgentToSpwanArea(); + blockCont.destroyBlock(); + } + } + + // get target observation states + public float[] getTargetStates() + { + // targettype, x,y,z, firebasesAreaDiameter + List targetState = new List(); + if (targetTypeInt == (int)Targets.Free) + { + targetState.AddRange(oneHotRarget[targetTypeInt]); + targetState.AddRange(new float[5] { 0f, 0f, 0f, 0f, 0f }); + } + else + { + targetState.AddRange(oneHotRarget[targetTypeInt]); + targetState.AddRange(new float[5] { targetPosition.x, targetPosition.y, targetPosition.z, blockCont.thisBlock.firebasesAreaDiameter, blockCont.thisBlock.belongRatio }); + } + return targetState.ToArray(); + } + + // move Agent into Agent Spawn Area + public void moveAgentToSpwanArea() + { + float randX = UnityEngine.Random.Range(minAgentAreaX, maxAgentAreaX); + float randZ = UnityEngine.Random.Range(minAgentAreaZ, maxAgentAreaZ); + int Y = 1; + Vector3 initAgentLoc = new Vector3(randX, Y, randZ); + moveAgentTo(initAgentLoc); + } + + // move Agent to this position + public void moveAgentTo(Vector3 thisPosition) + { + // while using transform.localPosition to move character + // u should turn off character Controller or it won't work + agentCharaCon.enabled = false; + AgentObj.transform.localPosition = thisPosition; + agentCharaCon.enabled = true; + } + + // caulculate sceneReward if close to target then get great reward + public float getSceneReward(float nowDistance) + { + if (firstRewardFlag) + { + (lastDistance, _) = blockCont.getAgentTargetDistanceAndInside(AgentObj.transform.position); + firstRewardFlag = false; + } + float thisSceneReward = 0f; + thisSceneReward = paramCon.distanceReward * (lastDistance - nowDistance); + lastDistance = nowDistance; + return thisSceneReward; + } + + // check over and get rewards + // 1 = success,2 = overtime,0 = notover + public (int, float) checkOverAndRewards() + { + int endTypeInt = 0; + float thisReward = 0; + int inArea = 0; + float nowDistance = 0f; + switch (targetTypeInt) + { + case (int)Targets.Go: + // goto + (nowDistance, inArea) = blockCont.getAgentTargetDistanceAndInside(AgentObj.transform.position); + envUICon.updateTargetGauge(blockCont.thisBlock.firebasesBelong, blockCont.thisBlock.belongMaxPoint); + if (blockCont.thisBlock.firebasesBelong >= blockCont.thisBlock.belongMaxPoint) + { + // win + // let the area belongs to me + thisReward = paramCon.winReward; + //thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance); + endTypeInt = (int)EndType.Win; + } + else if (leftTime <= 0) + { + // time out lose + thisReward = paramCon.loseReward; + //thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance); + endTypeInt = (int)EndType.Lose; + } + else + { + // keep on keeping on! + + thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance); + endTypeInt = (int)EndType.Running; + } + break; + case (int)Targets.Attack: + // attack + (nowDistance, inArea) = blockCont.getAgentTargetDistanceAndInside(AgentObj.transform.position); + envUICon.updateTargetGauge(blockCont.thisBlock.firebasesBelong, blockCont.thisBlock.belongMaxPoint); + if (blockCont.thisBlock.firebasesBelong >= blockCont.thisBlock.belongMaxPoint && blockCont.thisBlock.getInAreaNumber(group2Tag) <= 0) + { + // win + // let the area belongs to me and kill every enmy in this area. + thisReward = paramCon.winReward; + //thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance); + endTypeInt = (int)EndType.Win; + } + else if (leftTime <= 0) + { + // time out lose + thisReward = paramCon.loseReward; + //thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance); + endTypeInt = (int)EndType.Lose; + } + else + { + // keep on keeping on! + thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance); + endTypeInt = (int)EndType.Running; + } + break; + case (int)Targets.Defence: + //defence + (nowDistance, inArea) = blockCont.getAgentTargetDistanceAndInside(AgentObj.transform.position); + envUICon.updateTargetGauge(blockCont.thisBlock.firebasesBelong, blockCont.thisBlock.belongMaxPoint); + if (leftTime <= 0 && blockCont.thisBlock.firebasesBelong >= 0f) + { + // win + // time over and the area still mine + thisReward = paramCon.winReward; + //thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance); + endTypeInt = (int)EndType.Win; + } + else if (blockCont.thisBlock.firebasesBelong <= blockCont.thisBlock.belongMaxPoint) + { + // lost area lose + thisReward = paramCon.loseReward; + //thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance); + endTypeInt = (int)EndType.Lose; + } + else + { + // keep on keeping on! + thisReward = (paramCon.inAreaReward * inArea) + getSceneReward(nowDistance); + endTypeInt = (int)EndType.Running; + } + break; + default: + //free kill + if (EnemyContainerObj.transform.childCount <= 0) + { + // win + //thisReward = paramCon.winReward + (paramCon.timeBonusPerSecReward * leftTime); + thisReward = 0f; + endTypeInt = (int)EndType.Win; + } + else if (Time.time - startTime >= paramCon.timeLimit) + { + // lose + //thisReward = paramCon.loseReward; + thisReward = 0f; + endTypeInt = (int)EndType.Lose; + } + else + { + // keep on keeping on! + endTypeInt = (int)EndType.Running; + } + break; + } + envUICon.showResult(endTypeInt); + worldUICon.updateChart(targetTypeInt, endTypeInt); + return (endTypeInt, thisReward); + } + + // calculate kill reward base on killed enemy's position + public float killReward(Vector3 enemyPosition) + { + float thisKillReward = 0f; + if (targetTypeInt == (int)Targets.Attack) + { + // attack + (_, int isInArea) = blockCont.thisBlock.getDist_inArea(enemyPosition); + if (isInArea == 1) + { + thisKillReward = paramCon.killInAreaEnemyReward; + } + else + { + thisKillReward = paramCon.killReward; + } + } + else + { + // goto & defence & free + thisKillReward = paramCon.killReward; + } + return thisKillReward; + } +} diff --git a/Assets/Script/InGame/TargetController.cs.meta b/Assets/Script/InGame/TargetController.cs.meta new file mode 100644 index 0000000..6be58d2 --- /dev/null +++ b/Assets/Script/InGame/TargetController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 92a93d5d33962bc44b9fd2368358d47e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/WorldUIController.cs b/Assets/Script/InGame/WorldUIController.cs new file mode 100644 index 0000000..64596a6 --- /dev/null +++ b/Assets/Script/InGame/WorldUIController.cs @@ -0,0 +1,68 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using XCharts.Runtime; + +public class WorldUIController : MonoBehaviour +{ + public LineChart WinChart; + public int[] totalGames; + public int[] winGames; + + private int maxXAxis = 0; + // Start is called before the first frame update + void Start() + { + totalGames = new int[(int)TargetController.Targets.Num]; + winGames = new int[(int)TargetController.Targets.Num]; + Array.Clear(totalGames, 0, (int)TargetController.Targets.Num); + Array.Clear(winGames, 0, (int)TargetController.Targets.Num); + //WinChart.Init(); + WinChart.RemoveData(); + for (int i = 0; i < (int)TargetController.Targets.Num; i++) + { + string lineName = Enum.GetName(typeof(TargetController.Targets), i); + WinChart.AddSerie(lineName); + } + } + + // Update is called once per frame + void Update() + { + + } + public void updateChart(int targetType, int endType) + { + float winRatio = 0f; + switch (endType) + { + case (int)TargetController.EndType.Win: + //Win + totalGames[targetType] += 1; + winGames[targetType] += 1; + winRatio = (float)winGames[targetType] / totalGames[targetType]; + WinChart.AddData(targetType, winRatio); + if (totalGames[targetType] > maxXAxis) + { + maxXAxis = totalGames[targetType]; + WinChart.AddXAxisData(Convert.ToString(maxXAxis)); + } + break; + case (int)TargetController.EndType.Lose: + //lose + totalGames[targetType] += 1; + winRatio = (float)winGames[targetType] / totalGames[targetType]; + WinChart.AddData(targetType, winRatio); + if (totalGames[targetType] > maxXAxis) + { + maxXAxis = totalGames[targetType]; + WinChart.AddXAxisData(Convert.ToString(maxXAxis)); + } + break; + default: + break; + } + + } +} diff --git a/Assets/Script/InGame/WorldUIController.cs.meta b/Assets/Script/InGame/WorldUIController.cs.meta new file mode 100644 index 0000000..14b0a37 --- /dev/null +++ b/Assets/Script/InGame/WorldUIController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fe230edb81d2a59409af4d033c8d2e7a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Script/InGame/states.cs b/Assets/Script/InGame/states.cs new file mode 100644 index 0000000..18fc3b6 --- /dev/null +++ b/Assets/Script/InGame/states.cs @@ -0,0 +1,58 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class states : MonoBehaviour +{ + public bool isDead = false; + public float MaxHP = 100; + float myHP = 100; + + void Start() + { + myHP = MaxHP; + } + + void Update() + { + } + private void detactDeath() + { + if (myHP <= 0) + { + Destroy(this.gameObject); + isDead = true; + } + } + // while got hit + public void ReactToHit(float Damage, GameObject damageSource) + { + myHP -= Damage; + Debug.Log("HP:" + myHP); + if (myHP <= 0) + { + if (damageSource.tag == "Player") + { + damageSource.GetComponent().killRecord(transform.position); + Destroy(this.gameObject); + isDead = true; + } + else + { + Destroy(this.gameObject); + isDead = true; + } + } + } + // get my hp from other script + public float getnowHP() + { + return myHP; + } + + public void destroyMe() + { + Destroy(this.gameObject); + isDead = true; + } +} diff --git a/Assets/Script/InGame/states.cs.meta b/Assets/Script/InGame/states.cs.meta new file mode 100644 index 0000000..9366b90 --- /dev/null +++ b/Assets/Script/InGame/states.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b25389b3cd1e7084d81fa752823ef210 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/XCharts/Resources/XCSettings.asset b/Assets/XCharts/Resources/XCSettings.asset index 5b89701..fa07011 100644 --- a/Assets/XCharts/Resources/XCSettings.asset +++ b/Assets/XCharts/Resources/XCSettings.asset @@ -50,3 +50,5 @@ MonoBehaviour: m_CustomThemes: - {fileID: 11400000, guid: 289d2fc7f4ce24f73b9ed8ec52639f72, type: 2} - {fileID: 11400000, guid: e1dc23a10de1e4c5dbfbaf74c4dfd218, type: 2} + - {fileID: 11400000, guid: 2d6d9eb3b43d4a94e98f3bf183836b70, type: 2} + - {fileID: 11400000, guid: 0e489d624f47a3f4092d9e9e574eb883, type: 2} diff --git a/Assets/parameterContainer.cs b/Assets/parameterContainer.cs deleted file mode 100644 index 97b67ea..0000000 --- a/Assets/parameterContainer.cs +++ /dev/null @@ -1,33 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class parameterContainer : MonoBehaviour -{ - [Header("Env")] - public bool lockMouse = false; - public float Damage = 50; // damage to enemy - public float fireRate = 0.5f; - public int enemyNum = 3; - public int timeLimit = 30; - public bool lockCameraX = false; - public bool lockCameraY = true; - - [Header("Rewards")] - [Tooltip("Nothing happened reward")] - public float nonRewardDefault = -0.05f; - [Tooltip("Agent Do shoot action reward")] - public float shootRewardDefault = -0.1f; - [Tooltip("Agent Do shoot action but gun is not read")] - public float shootWithoutReadyRewardDefault = -0.15f; - [Tooltip("Hit Enemy reward")] - public float hitRewardDefault = 30.0f; - [Tooltip("Episode Win reward")] - public float winRewardDefault = 50.0f; - [Tooltip("Episode Lose reward")] - public float loseRewardDefault = -0.05f; - [Tooltip("Enemy down reward")] - public float killRewardDefault = 40.0f; - [Tooltip("Kill bonus reward stack to nothing happend reward")] - public float killBonusRewardDefault = 0.0f; -} diff --git a/Packages/manifest.json b/Packages/manifest.json index 4df3b2e..c48f087 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -1,14 +1,15 @@ { "dependencies": { "com.monitor1394.xcharts": "https://github.com/XCharts-Team/XCharts.git#3.0", - "com.unity.collab-proxy": "1.9.0", - "com.unity.ide.rider": "2.0.7", + "com.unity.collab-proxy": "1.17.6", + "com.unity.ide.rider": "3.0.16", "com.unity.ide.visualstudio": "2.0.16", - "com.unity.ide.vscode": "1.2.4", + "com.unity.ide.vscode": "1.2.5", "com.unity.ml-agents": "2.0.1", - "com.unity.test-framework": "1.1.29", + "com.unity.probuilder": "5.0.3", + "com.unity.test-framework": "1.1.31", "com.unity.textmeshpro": "3.0.6", - "com.unity.timeline": "1.4.8", + "com.unity.timeline": "1.6.4", "com.unity.ugui": "1.0.0", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 80e0b37..ad5fd15 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -19,7 +19,7 @@ "url": "https://packages.unity.com" }, "com.unity.burst": { - "version": "1.6.0", + "version": "1.6.6", "depth": 2, "source": "registry", "dependencies": { @@ -28,10 +28,12 @@ "url": "https://packages.unity.com" }, "com.unity.collab-proxy": { - "version": "1.9.0", + "version": "1.17.6", "depth": 0, "source": "registry", - "dependencies": {}, + "dependencies": { + "com.unity.services.core": "1.0.1" + }, "url": "https://packages.unity.com" }, "com.unity.ext.nunit": { @@ -42,11 +44,11 @@ "url": "https://packages.unity.com" }, "com.unity.ide.rider": { - "version": "2.0.7", + "version": "3.0.16", "depth": 0, "source": "registry", "dependencies": { - "com.unity.test-framework": "1.1.1" + "com.unity.ext.nunit": "1.0.6" }, "url": "https://packages.unity.com" }, @@ -60,14 +62,14 @@ "url": "https://packages.unity.com" }, "com.unity.ide.vscode": { - "version": "1.2.4", + "version": "1.2.5", "depth": 0, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com" }, "com.unity.mathematics": { - "version": "1.2.1", + "version": "1.2.6", "depth": 3, "source": "registry", "dependencies": {}, @@ -84,8 +86,44 @@ }, "url": "https://packages.unity.com" }, + "com.unity.nuget.newtonsoft-json": { + "version": "3.0.2", + "depth": 2, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, + "com.unity.probuilder": { + "version": "5.0.3", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.settings-manager": "1.0.3", + "com.unity.modules.physics": "1.0.0", + "com.unity.modules.imgui": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.services.core": { + "version": "1.6.0", + "depth": 1, + "source": "registry", + "dependencies": { + "com.unity.modules.unitywebrequest": "1.0.0", + "com.unity.nuget.newtonsoft-json": "3.0.2", + "com.unity.modules.androidjni": "1.0.0" + }, + "url": "https://packages.unity.com" + }, + "com.unity.settings-manager": { + "version": "1.0.3", + "depth": 1, + "source": "registry", + "dependencies": {}, + "url": "https://packages.unity.com" + }, "com.unity.test-framework": { - "version": "1.1.29", + "version": "1.1.31", "depth": 0, "source": "registry", "dependencies": { @@ -105,7 +143,7 @@ "url": "https://packages.unity.com" }, "com.unity.timeline": { - "version": "1.4.8", + "version": "1.6.4", "depth": 0, "source": "registry", "dependencies": { diff --git a/ProjectSettings/GraphicsSettings.asset b/ProjectSettings/GraphicsSettings.asset index 43369e3..88dfcc8 100644 --- a/ProjectSettings/GraphicsSettings.asset +++ b/ProjectSettings/GraphicsSettings.asset @@ -28,6 +28,7 @@ GraphicsSettings: m_LensFlare: m_Mode: 1 m_Shader: {fileID: 102, guid: 0000000000000000f000000000000000, type: 0} + m_VideoShadersIncludeMode: 2 m_AlwaysIncludedShaders: - {fileID: 7, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 15104, guid: 0000000000000000f000000000000000, type: 0} @@ -36,8 +37,7 @@ GraphicsSettings: - {fileID: 10753, guid: 0000000000000000f000000000000000, type: 0} - {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} m_PreloadedShaders: [] - m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, - type: 0} + m_SpritesDefaultMaterial: {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} m_CustomRenderPipeline: {fileID: 0} m_TransparencySortMode: 0 m_TransparencySortAxis: {x: 0, y: 0, z: 1} @@ -59,5 +59,5 @@ GraphicsSettings: m_AlbedoSwatchInfos: [] m_LightsUseLinearIntensity: 0 m_LightsUseColorTemperature: 0 + m_DefaultRenderingLayerMask: 1 m_LogWhenShaderIsCompiled: 0 - m_AllowEnlightenSupportForUpgradedProject: 0 diff --git a/ProjectSettings/MemorySettings.asset b/ProjectSettings/MemorySettings.asset new file mode 100644 index 0000000..5b5face --- /dev/null +++ b/ProjectSettings/MemorySettings.asset @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!387306366 &1 +MemorySettings: + m_ObjectHideFlags: 0 + m_EditorMemorySettings: + m_MainAllocatorBlockSize: -1 + m_ThreadAllocatorBlockSize: -1 + m_MainGfxBlockSize: -1 + m_ThreadGfxBlockSize: -1 + m_CacheBlockSize: -1 + m_TypetreeBlockSize: -1 + m_ProfilerBlockSize: -1 + m_ProfilerEditorBlockSize: -1 + m_BucketAllocatorGranularity: -1 + m_BucketAllocatorBucketsCount: -1 + m_BucketAllocatorBlockSize: -1 + m_BucketAllocatorBlockCount: -1 + m_ProfilerBucketAllocatorGranularity: -1 + m_ProfilerBucketAllocatorBucketsCount: -1 + m_ProfilerBucketAllocatorBlockSize: -1 + m_ProfilerBucketAllocatorBlockCount: -1 + m_TempAllocatorSizeMain: -1 + m_JobTempAllocatorBlockSize: -1 + m_BackgroundJobTempAllocatorBlockSize: -1 + m_JobTempAllocatorReducedBlockSize: -1 + m_TempAllocatorSizeGIBakingWorker: -1 + m_TempAllocatorSizeNavMeshWorker: -1 + m_TempAllocatorSizeAudioWorker: -1 + m_TempAllocatorSizeCloudWorker: -1 + m_TempAllocatorSizeGfx: -1 + m_TempAllocatorSizeJobWorker: -1 + m_TempAllocatorSizeBackgroundWorker: -1 + m_TempAllocatorSizePreloadManager: -1 + m_PlatformMemorySettings: {} diff --git a/ProjectSettings/Packages/com.unity.probuilder/Settings.json b/ProjectSettings/Packages/com.unity.probuilder/Settings.json new file mode 100644 index 0000000..2401322 --- /dev/null +++ b/ProjectSettings/Packages/com.unity.probuilder/Settings.json @@ -0,0 +1,133 @@ +{ + "m_Name": "Settings", + "m_Path": "ProjectSettings/Packages/com.unity.probuilder/Settings.json", + "m_Dictionary": { + "m_DictionaryValues": [ + { + "type": "UnityEngine.ProBuilder.LogLevel, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", + "key": "log.level", + "value": "{\"m_Value\":3}" + }, + { + "type": "UnityEngine.ProBuilder.LogOutput, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", + "key": "log.output", + "value": "{\"m_Value\":1}" + }, + { + "type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "log.path", + "value": "{\"m_Value\":\"ProBuilderLog.txt\"}" + }, + { + "type": "UnityEngine.ProBuilder.SemVer, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", + "key": "about.identifier", + "value": "{\"m_Value\":{\"m_Major\":5,\"m_Minor\":0,\"m_Patch\":3,\"m_Build\":-1,\"m_Type\":\"\",\"m_Metadata\":\"\",\"m_Date\":\"\"}}" + }, + { + "type": "UnityEngine.ProBuilder.SemVer, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", + "key": "preferences.version", + "value": "{\"m_Value\":{\"m_Major\":5,\"m_Minor\":0,\"m_Patch\":3,\"m_Build\":-1,\"m_Type\":\"\",\"m_Metadata\":\"\",\"m_Date\":\"\"}}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "UnityEngine.ProBuilder.ProBuilderEditor-isUtilityWindow", + "value": "{\"m_Value\":false}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "editor.backFaceSelectEnabled", + "value": "{\"m_Value\":false}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "editor.toolbarIconGUI", + "value": "{\"m_Value\":false}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "editor.showSceneInfo", + "value": "{\"m_Value\":false}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "mesh.newShapesSnapToGrid", + "value": "{\"m_Value\":true}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "lightmapping.autoUnwrapLightmapUV", + "value": "{\"m_Value\":true}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "editor.autoRecalculateCollisions", + "value": "{\"m_Value\":false}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "mesh.meshColliderIsConvex", + "value": "{\"m_Value\":false}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "editor.showEditorNotifications", + "value": "{\"m_Value\":false}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "editor.stripProBuilderScriptsOnBuild", + "value": "{\"m_Value\":true}" + }, + { + "type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089", + "key": "experimental.enabled", + "value": "{\"m_Value\":false}" + }, + { + "type": "UnityEngine.ProBuilder.SelectionModifierBehavior, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", + "key": "editor.rectSelectModifier", + "value": "{\"m_Value\":2}" + }, + { + "type": "UnityEngine.ProBuilder.RectSelectMode, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", + "key": "editor.dragSelectRectMode", + "value": "{\"m_Value\":0}" + }, + { + "type": "UnityEngine.ProBuilder.SelectMode, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", + "key": "editor.selectMode", + "value": "{\"m_Value\":1}" + }, + { + "type": "UnityEngine.ProBuilder.PivotLocation, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", + "key": "mesh.newShapePivotLocation", + "value": "{\"m_Value\":1}" + }, + { + "type": "UnityEngine.Rendering.ShadowCastingMode, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", + "key": "mesh.shadowCastingMode", + "value": "{\"m_Value\":1}" + }, + { + "type": "UnityEngine.Material, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", + "key": "mesh.userMaterial", + "value": "{\"m_Value\":{\"instanceID\":0}}" + }, + { + "type": "UnityEditor.StaticEditorFlags, UnityEditor.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", + "key": "mesh.defaultStaticEditorFlags", + "value": "{\"m_Value\":0}" + }, + { + "type": "UnityEngine.ProBuilder.ColliderType, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", + "key": "mesh.newShapeColliderType", + "value": "{\"m_Value\":2}" + }, + { + "type": "UnityEngine.ProBuilder.UnwrapParameters, Unity.ProBuilder, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null", + "key": "lightmapping.defaultLightmapUnwrapParameters", + "value": "{\"m_Value\":{\"m_HardAngle\":88.0,\"m_PackMargin\":20.0,\"m_AngleError\":8.0,\"m_AreaError\":15.0}}" + } + ] + } +} \ No newline at end of file diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 39e9125..6a95707 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2020.3.19f1 -m_EditorVersionWithRevision: 2020.3.19f1 (68f137dc9bbe) +m_EditorVersion: 2021.3.14f1 +m_EditorVersionWithRevision: 2021.3.14f1 (eee1884e7226) diff --git a/ProjectSettings/boot.config b/ProjectSettings/boot.config new file mode 100644 index 0000000..e69de29 diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index 8308f19..e4dcb15 100644 --- a/UserSettings/EditorUserSettings.asset +++ b/UserSettings/EditorUserSettings.asset @@ -15,6 +15,9 @@ EditorUserSettings: value: 224247031146467d1f0b09041c3a7c111b120a2b630c233d22662e30e7ee312badc333e4e8742a323016f6 flags: 0 RecentlyUsedScenePath-3: + value: 224247031146467c1f0708201f3b1f2004180c25383136356d041c27e7f23d39eef479cde23730730910e0280b2a182ff74a240ae20e18021002ee4e35fa1d1c5fd016cc0ed1 + flags: 0 + RecentlyUsedScenePath-4: value: 22424703114646680e0b0227036c761e3116152f623d28393930 flags: 0 vcSharedLogLevel: diff --git a/UserSettings/Layouts/default-2021.dwlt b/UserSettings/Layouts/default-2021.dwlt new file mode 100644 index 0000000..89870d8 --- /dev/null +++ b/UserSettings/Layouts/default-2021.dwlt @@ -0,0 +1,1102 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_PixelRect: + serializedVersion: 2 + x: 70 + y: 92 + width: 1840 + height: 980 + m_ShowMode: 4 + m_Title: Scene + m_RootView: {fileID: 12} + m_MinSize: {x: 875, y: 542} + m_MaxSize: {x: 10000, y: 10000} + m_Maximized: 0 +--- !u!114 &2 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12004, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_PixelRect: + serializedVersion: 2 + x: -1018 + y: -689 + width: 1018 + height: 630 + m_ShowMode: 0 + m_Title: Game + m_RootView: {fileID: 4} + m_MinSize: {x: 100, y: 121} + m_MaxSize: {x: 4000, y: 4021} + m_Maximized: 0 +--- !u!114 &3 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: GameView + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 1018 + height: 630 + m_MinSize: {x: 100, y: 121} + m_MaxSize: {x: 4000, y: 4021} + m_ActualView: {fileID: 16} + m_Panes: + - {fileID: 16} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &4 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 3} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 1018 + height: 630 + m_MinSize: {x: 100, y: 121} + m_MaxSize: {x: 4000, y: 4021} + vertical: 0 + controlID: 15 +--- !u!114 &5 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: ProjectBrowser + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 669 + width: 1079 + height: 261 + m_MinSize: {x: 231, y: 271} + m_MaxSize: {x: 10001, y: 10021} + m_ActualView: {fileID: 18} + m_Panes: + - {fileID: 18} + - {fileID: 17} + m_Selected: 0 + m_LastSelected: 1 +--- !u!114 &6 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 15} + - {fileID: 5} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 1079 + height: 930 + m_MinSize: {x: 100, y: 200} + m_MaxSize: {x: 8096, y: 16192} + vertical: 1 + controlID: 128 +--- !u!114 &7 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: ConsoleWindow + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 360 + width: 328 + height: 570 + m_MinSize: {x: 102, y: 121} + m_MaxSize: {x: 4002, y: 4021} + m_ActualView: {fileID: 22} + m_Panes: + - {fileID: 22} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &8 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 9} + - {fileID: 7} + m_Position: + serializedVersion: 2 + x: 1079 + y: 0 + width: 328 + height: 930 + m_MinSize: {x: 100, y: 200} + m_MaxSize: {x: 8096, y: 16192} + vertical: 1 + controlID: 137 +--- !u!114 &9 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: SceneHierarchyWindow + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 328 + height: 360 + m_MinSize: {x: 202, y: 221} + m_MaxSize: {x: 4002, y: 4021} + m_ActualView: {fileID: 20} + m_Panes: + - {fileID: 20} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &10 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 6} + - {fileID: 8} + - {fileID: 11} + m_Position: + serializedVersion: 2 + x: 0 + y: 30 + width: 1840 + height: 930 + m_MinSize: {x: 300, y: 200} + m_MaxSize: {x: 24288, y: 16192} + vertical: 0 + controlID: 136 +--- !u!114 &11 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 1407 + y: 0 + width: 433 + height: 930 + m_MinSize: {x: 276, y: 71} + m_MaxSize: {x: 4001, y: 4021} + m_ActualView: {fileID: 19} + m_Panes: + - {fileID: 19} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &12 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12008, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 13} + - {fileID: 10} + - {fileID: 14} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 1840 + height: 980 + m_MinSize: {x: 875, y: 300} + m_MaxSize: {x: 10000, y: 10000} + m_UseTopView: 1 + m_TopViewHeight: 30 + m_UseBottomView: 1 + m_BottomViewHeight: 20 +--- !u!114 &13 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12011, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 1840 + height: 30 + m_MinSize: {x: 0, y: 0} + m_MaxSize: {x: 0, y: 0} + m_LastLoadedLayoutName: +--- !u!114 &14 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12042, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 960 + width: 1840 + height: 20 + m_MinSize: {x: 0, y: 0} + m_MaxSize: {x: 0, y: 0} +--- !u!114 &15 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: SceneView + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 1079 + height: 669 + m_MinSize: {x: 201, y: 221} + m_MaxSize: {x: 4001, y: 4021} + m_ActualView: {fileID: 21} + m_Panes: + - {fileID: 21} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &16 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 12015, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 100, y: 100} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Game + m_Image: {fileID: -6423792434712278376, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: -1018 + y: -689 + width: 1018 + height: 609 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_SerializedViewNames: [] + m_SerializedViewValues: [] + m_PlayModeViewName: GameView + m_ShowGizmos: 0 + m_TargetDisplay: 0 + m_ClearColor: {r: 0, g: 0, b: 0, a: 0} + m_TargetSize: {x: 1018, y: 588} + m_TextureFilterMode: 0 + m_TextureHideFlags: 61 + m_RenderIMGUI: 1 + m_EnterPlayModeBehavior: 0 + m_UseMipMap: 0 + m_VSyncEnabled: 0 + m_Gizmos: 0 + m_Stats: 1 + m_SelectedSizes: 00000000000000000000000000000000000000000000000000000000000000000000000000000000 + m_ZoomArea: + m_HRangeLocked: 0 + m_VRangeLocked: 0 + hZoomLockedByDefault: 0 + vZoomLockedByDefault: 0 + m_HBaseRangeMin: -509 + m_HBaseRangeMax: 509 + m_VBaseRangeMin: -294 + m_VBaseRangeMax: 294 + m_HAllowExceedBaseRangeMin: 1 + m_HAllowExceedBaseRangeMax: 1 + m_VAllowExceedBaseRangeMin: 1 + m_VAllowExceedBaseRangeMax: 1 + m_ScaleWithWindow: 0 + m_HSlider: 0 + m_VSlider: 0 + m_IgnoreScrollWheelUntilClicked: 0 + m_EnableMouseInput: 1 + m_EnableSliderZoomHorizontal: 0 + m_EnableSliderZoomVertical: 0 + m_UniformScale: 1 + m_UpDirection: 1 + m_DrawArea: + serializedVersion: 2 + x: 0 + y: 21 + width: 1018 + height: 588 + m_Scale: {x: 1, y: 1} + m_Translation: {x: 509, y: 294} + m_MarginLeft: 0 + m_MarginRight: 0 + m_MarginTop: 0 + m_MarginBottom: 0 + m_LastShownAreaInsideMargins: + serializedVersion: 2 + x: -509 + y: -294 + width: 1018 + height: 588 + m_MinimalGUI: 1 + m_defaultScale: 1 + m_LastWindowPixelSize: {x: 1018, y: 609} + m_ClearInEditMode: 1 + m_NoCameraWarning: 1 + m_LowResolutionForAspectRatios: 01000000000000000000 + m_XRRenderMode: 0 + m_RenderTexture: {fileID: 0} +--- !u!114 &17 +MonoBehaviour: + m_ObjectHideFlags: 52 + 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: 13953, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 800, y: 250} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Package Manager + m_Image: {fileID: -2824328813065806953, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 1920 + y: 784 + width: 1125 + height: 255 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] +--- !u!114 &18 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 230, y: 250} + m_MaxSize: {x: 10000, y: 10000} + m_TitleContent: + m_Text: Project + m_Image: {fileID: -5467254957812901981, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 70 + y: 791 + width: 1078 + height: 240 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_SearchFilter: + m_NameFilter: + m_ClassNames: [] + m_AssetLabels: [] + m_AssetBundleNames: [] + m_VersionControlStates: [] + m_SoftLockControlStates: [] + m_ReferencingInstanceIDs: + m_SceneHandles: + m_ShowAllHits: 0 + m_SkipHidden: 0 + m_SearchArea: 1 + m_Folders: + - Assets/Prefeb/GoBlock + m_Globs: [] + m_OriginalText: + m_ViewMode: 1 + m_StartGridSize: 16 + m_LastFolders: + - Assets/Prefeb/GoBlock + m_LastFoldersGridSize: 16 + m_LastProjectPath: C:\Users\UCUNI\OneDrive\Unity\ML-Agents\Aimbot-ParallelEnv + m_LockTracker: + m_IsLocked: 0 + m_FolderTreeState: + scrollPos: {x: 0, y: 100} + m_SelectedIDs: 0e770000 + m_LastClickedID: 30478 + m_ExpandedIDs: 00000000c6760000c8760000ca760000cc760000ce760000d0760000d2760000d476000000ca9a3bffffff7f + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 5} + m_SearchString: + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_AssetTreeState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: + m_LastClickedID: 0 + m_ExpandedIDs: 00000000c6760000c8760000ca760000cc760000ce760000d0760000d2760000d4760000 + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_SearchString: + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_ListAreaState: + m_SelectedInstanceIDs: + m_LastClickedInstanceID: 0 + m_HadKeyboardFocusLastEvent: 0 + m_ExpandedInstanceIDs: c623000000000000 + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 5} + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_NewAssetIndexInList: -1 + m_ScrollPosition: {x: 0, y: 0} + m_GridSize: 16 + m_SkipHiddenPackages: 0 + m_DirectoriesAreaWidth: 355 +--- !u!114 &19 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 275, y: 50} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Inspector + m_Image: {fileID: -2667387946076563598, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 1477 + y: 122 + width: 432 + height: 909 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_ObjectsLockedBeforeSerialization: [] + m_InstanceIDsLockedBeforeSerialization: + m_PreviewResizer: + m_CachedPref: 160 + m_ControlHash: -371814159 + m_PrefName: Preview_InspectorPreview + m_LastInspectedObjectInstanceID: -1 + m_LastVerticalScrollValue: 54 + m_GlobalObjectId: + m_InspectorMode: 0 + m_LockTracker: + m_IsLocked: 0 + m_PreviewWindow: {fileID: 0} +--- !u!114 &20 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Hierarchy + m_Image: {fileID: 7966133145522015247, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 1149 + y: 122 + width: 326 + height: 339 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] + m_SceneHierarchy: + m_TreeViewState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: + m_LastClickedID: 0 + m_ExpandedIDs: 32fbffff + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 0 + m_ClientGUIView: {fileID: 9} + m_SearchString: + m_ExpandedScenes: [] + m_CurrenRootInstanceID: 0 + m_LockTracker: + m_IsLocked: 0 + m_CurrentSortingName: TransformSorting + m_WindowGUID: 4c969a2b90040154d917609493e03593 +--- !u!114 &21 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Scene + m_Image: {fileID: 2593428753322112591, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 70 + y: 122 + width: 1078 + height: 648 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: + - dockPosition: 0 + containerId: overlay-toolbar__top + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: -101, y: -26} + snapCorner: 3 + id: Tool Settings + index: 0 + layout: 1 + - dockPosition: 0 + containerId: overlay-toolbar__top + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: -141, y: 149} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 1 + id: unity-grid-and-snap-toolbar + index: 1 + layout: 1 + - dockPosition: 1 + containerId: overlay-toolbar__top + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: unity-scene-view-toolbar + index: 0 + layout: 1 + - dockPosition: 1 + containerId: overlay-toolbar__top + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 1 + id: unity-search-toolbar + index: 1 + layout: 1 + - dockPosition: 0 + containerId: overlay-container--left + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 0, y: 25} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: unity-transform-toolbar + index: 0 + layout: 2 + - dockPosition: 0 + containerId: overlay-container--left + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 0, y: 197} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: unity-component-tools + index: 1 + layout: 2 + - dockPosition: 0 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 1 + snapOffset: {x: 67.5, y: 86} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Orientation + index: 0 + layout: 4 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Light Settings + index: 0 + layout: 4 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Camera + index: 1 + layout: 4 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Cloth Constraints + index: 2 + layout: 4 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Cloth Collisions + index: 3 + layout: 4 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Navmesh Display + index: 4 + layout: 4 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Agent Display + index: 5 + layout: 4 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Obstacle Display + index: 6 + layout: 4 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Occlusion Culling + index: 7 + layout: 4 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Physics Debugger + index: 8 + layout: 4 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Scene Visibility + index: 9 + layout: 4 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Particles + index: 10 + layout: 4 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Tilemap + index: 11 + layout: 4 + - dockPosition: 1 + containerId: overlay-container--right + floating: 0 + collapsed: 0 + displayed: 0 + snapOffset: {x: 0, y: 0} + snapOffsetDelta: {x: 0, y: 0} + snapCorner: 0 + id: Scene View/Tilemap Palette Helper + index: 12 + layout: 4 + m_WindowGUID: cc27987af1a868c49b0894db9c0f5429 + m_Gizmos: 1 + m_OverrideSceneCullingMask: 6917529027641081856 + m_SceneIsLit: 1 + m_SceneLighting: 1 + m_2DMode: 0 + m_isRotationLocked: 0 + m_PlayAudio: 0 + m_AudioPlay: 0 + m_Position: + m_Target: {x: -34.113144, y: 18.527344, z: 51.342407} + speed: 2 + m_Value: {x: -34.113144, y: 18.527344, z: 51.342407} + m_RenderMode: 0 + m_CameraMode: + drawMode: 0 + name: Shaded + section: Shading Mode + m_ValidateTrueMetals: 0 + m_DoValidateTrueMetals: 0 + m_ExposureSliderValue: 0 + m_SceneViewState: + m_AlwaysRefresh: 0 + showFog: 1 + showSkybox: 1 + showFlares: 1 + showImageEffects: 1 + showParticleSystems: 1 + showVisualEffectGraphs: 1 + m_FxEnabled: 1 + m_Grid: + xGrid: + m_Fade: + m_Target: 0 + speed: 2 + m_Value: 0 + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} + m_Pivot: {x: 0, y: 0, z: 0} + m_Size: {x: 0, y: 0} + yGrid: + m_Fade: + m_Target: 1 + speed: 2 + m_Value: 1 + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} + m_Pivot: {x: 0, y: 0, z: 0} + m_Size: {x: 1, y: 1} + zGrid: + m_Fade: + m_Target: 0 + speed: 2 + m_Value: 0 + m_Color: {r: 0.5, g: 0.5, b: 0.5, a: 0.4} + m_Pivot: {x: 0, y: 0, z: 0} + m_Size: {x: 1, y: 1} + m_ShowGrid: 1 + m_GridAxis: 1 + m_gridOpacity: 0.5 + m_Rotation: + m_Target: {x: 0.33203965, y: 0.20104572, z: -0.07264823, w: 0.91870475} + speed: 2 + m_Value: {x: 0.331936, y: 0.20242701, z: -0.07314745, w: 0.9184179} + m_Size: + m_Target: 328.48233 + speed: 2 + m_Value: 314.33716 + m_Ortho: + m_Target: 0 + speed: 2 + m_Value: 0 + m_CameraSettings: + m_Speed: 1.0005 + m_SpeedNormalized: 0.5 + m_SpeedMin: 0.001 + m_SpeedMax: 2 + m_EasingEnabled: 1 + m_EasingDuration: 0.4 + m_AccelerationEnabled: 1 + m_FieldOfViewHorizontalOrVertical: 60 + m_NearClip: 0.03 + m_FarClip: 10000 + m_DynamicClip: 1 + m_OcclusionCulling: 0 + m_LastSceneViewRotation: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} + m_LastSceneViewOrtho: 0 + m_ReplacementShader: {fileID: 0} + m_ReplacementString: + m_SceneVisActive: 1 + m_LastLockedObject: {fileID: 0} + m_ViewIsLockedToObject: 0 +--- !u!114 &22 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12003, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_MinSize: {x: 100, y: 100} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Console + m_Image: {fileID: -4327648978806127646, guid: 0000000000000000d000000000000000, type: 0} + m_Tooltip: + m_Pos: + serializedVersion: 2 + x: 1149 + y: 482 + width: 326 + height: 549 + m_ViewDataDictionary: {fileID: 0} + m_OverlayCanvas: + m_LastAppliedPresetName: Default + m_SaveData: [] diff --git a/UserSettings/Search.settings b/UserSettings/Search.settings new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/UserSettings/Search.settings @@ -0,0 +1 @@ +{} \ No newline at end of file