From 6acb4293e06ae19c404ffa340ac9cd5b4ff3b984 Mon Sep 17 00:00:00 2001 From: BOT Alex <44818698+MagicBOTAlex@users.noreply.github.com> Date: Sat, 20 Apr 2024 15:38:21 +0200 Subject: [PATCH 1/7] Slots now selectable --- .../PlacementSystem/CameraSlotClickDetect.cs | 1 + Assets/Scripts/PlacementSystem/GridManager.cs | 14 ++++++++++++ .../PlacementSystem/PlacementManager.cs | 22 ++++++++++++++++++- Assets/Scripts/PlacementSystem/SlotManager.cs | 7 +++++- 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/Assets/Scripts/PlacementSystem/CameraSlotClickDetect.cs b/Assets/Scripts/PlacementSystem/CameraSlotClickDetect.cs index 90378c5..bb24fe4 100644 --- a/Assets/Scripts/PlacementSystem/CameraSlotClickDetect.cs +++ b/Assets/Scripts/PlacementSystem/CameraSlotClickDetect.cs @@ -23,6 +23,7 @@ public class CameraSlotClickDetect : MonoBehaviour if (Physics.Raycast(ray, out hit, Mathf.Infinity, layerMask)) { var slotInfo = hit.collider.gameObject.GetComponentInParent(); + slotInfo.OnClick(); Debug.Log($"Hit PlacementSlot! At ({slotInfo.x}, {slotInfo.y})"); } diff --git a/Assets/Scripts/PlacementSystem/GridManager.cs b/Assets/Scripts/PlacementSystem/GridManager.cs index f902747..73609a3 100644 --- a/Assets/Scripts/PlacementSystem/GridManager.cs +++ b/Assets/Scripts/PlacementSystem/GridManager.cs @@ -7,14 +7,19 @@ public class GridManager : MonoBehaviour { [SerializeField] private Vector2Int GridSize; [SerializeField] private float Gap = 0.1f; + [SerializeField] private GridType gridType = GridType.Primary; [Space(10)] [SerializeField] private GameObject TowerSlotPrefab; [DoNotSerialize] public List SpawnedSlots = new(); + [DoNotSerialize] public string[,] GridStates; + private void OnEnable() { TowerPlacementManager.OnSpawnGridRequested += SpawnSlots; + + GridStates = new string[GridSize.x, GridSize.y]; } private void OnDisable() @@ -39,8 +44,17 @@ public class GridManager : MonoBehaviour infoHolder.x = x; infoHolder.y = y; + infoHolder.OnSlotClicked += sender.OnSlotClicked; + SpawnedSlots.Add(spawned); } } } +} + +public enum GridType +{ + Primary, + Wall, + Celling } \ No newline at end of file diff --git a/Assets/Scripts/PlacementSystem/PlacementManager.cs b/Assets/Scripts/PlacementSystem/PlacementManager.cs index bdc46cd..9095ef8 100644 --- a/Assets/Scripts/PlacementSystem/PlacementManager.cs +++ b/Assets/Scripts/PlacementSystem/PlacementManager.cs @@ -10,9 +10,11 @@ public class TowerPlacementManager : MonoBehaviour /// Sender /// public static event Action OnSpawnGridRequested; - public static TowerPlacementManager Singleton; + // Section: Selection + private SlotManager CurrentSelected; + private void Start() { if (Singleton != this) @@ -24,6 +26,24 @@ public class TowerPlacementManager : MonoBehaviour public void OnSlotClicked(SlotManager slot, GridManager grid, int x, int y) { + slot.gameObject.GetComponentInChildren().material.color = Color.blue; + OnSelectSlot(slot); + } + // Called when a slot is selected + public void OnSelectSlot(SlotManager slot) + { + // Detects if the selected slot is new + if (CurrentSelected != null && CurrentSelected != slot) + OnDeselectSlot(CurrentSelected, slot); + CurrentSelected = slot; + + slot.gameObject.GetComponentInChildren().material.color = Color.blue; + } + + // Called when another slot is getting selected + public void OnDeselectSlot(SlotManager prevSlot, SlotManager newSlot) + { + prevSlot.gameObject.GetComponentInChildren().material.color = Color.white; } } diff --git a/Assets/Scripts/PlacementSystem/SlotManager.cs b/Assets/Scripts/PlacementSystem/SlotManager.cs index 1cf3f1a..9cb1121 100644 --- a/Assets/Scripts/PlacementSystem/SlotManager.cs +++ b/Assets/Scripts/PlacementSystem/SlotManager.cs @@ -12,5 +12,10 @@ public class SlotManager : MonoBehaviour /// /// (Sender, spawnerRef, X, Y) /// - public static event Action OnSlotClicked; + public event Action OnSlotClicked; + + public void OnClick() + { + OnSlotClicked?.Invoke(this, spawnerRef, x, y); + } } From 8c862f1cec567ccd84dc9810b89adfa7012ff1e5 Mon Sep 17 00:00:00 2001 From: Sveske Juice Date: Sat, 20 Apr 2024 15:56:26 +0200 Subject: [PATCH 2/7] Turret aiming almost working --- Assets/Models.meta | 8 + Assets/Models/1ShootTower2.fbx | Bin 0 -> 67308 bytes Assets/Models/1ShootTower2.fbx.meta | 109 +++ Assets/Prefabs/Towers/BaseTower.prefab | 253 ++---- Assets/Prefabs/Towers/BaseTower.prefab.meta | 2 +- Assets/Prefabs/Towers/Turret.prefab | 893 +++++++++----------- Assets/Scenes/TowerTest.unity | 725 +++++++++++++++- Assets/Scripts/Tower/Projectile.cs | 22 + Assets/Scripts/Tower/Projectile.cs.meta | 11 + Assets/Scripts/Tower/ProjectileTower.cs | 35 +- Assets/Scripts/Tower/Tower.cs | 2 + Assets/Scripts/Utilities/EditableArc.cs | 4 +- 12 files changed, 1388 insertions(+), 676 deletions(-) create mode 100644 Assets/Models.meta create mode 100644 Assets/Models/1ShootTower2.fbx create mode 100644 Assets/Models/1ShootTower2.fbx.meta create mode 100644 Assets/Scripts/Tower/Projectile.cs create mode 100644 Assets/Scripts/Tower/Projectile.cs.meta diff --git a/Assets/Models.meta b/Assets/Models.meta new file mode 100644 index 0000000..2e4a3ef --- /dev/null +++ b/Assets/Models.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: da64e159659706174b961afd273fd7a9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Models/1ShootTower2.fbx b/Assets/Models/1ShootTower2.fbx new file mode 100644 index 0000000000000000000000000000000000000000..cb1517c23a969bf10e7d466e6c455ad402322829 GIT binary patch literal 67308 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 literal 0 HcmV?d00001 diff --git a/Assets/Models/1ShootTower2.fbx.meta b/Assets/Models/1ShootTower2.fbx.meta new file mode 100644 index 0000000..198f782 --- /dev/null +++ b/Assets/Models/1ShootTower2.fbx.meta @@ -0,0 +1,109 @@ +fileFormatVersion: 2 +guid: eb5e13df78999ef878da1db5c63224e2 +ModelImporter: + serializedVersion: 22200 + internalIDToNameTable: [] + externalObjects: {} + materials: + materialImportMode: 2 + materialName: 0 + materialSearch: 1 + materialLocation: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleCurves: 1 + optimizeGameObjects: 0 + removeConstantScaleCurves: 0 + motionNodeName: + rigImportErrors: + rigImportWarnings: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + importAnimatedCustomProperties: 0 + importConstraints: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + extraUserProperties: [] + clipAnimations: [] + isReadable: 0 + meshes: + lODScreenPercentages: [] + globalScale: 0.1 + meshCompression: 0 + addColliders: 0 + useSRGBMaterialColor: 1 + sortHierarchyByName: 1 + importPhysicalCameras: 1 + importVisibility: 1 + importBlendShapes: 1 + importCameras: 1 + importLights: 1 + nodeNameCollisionStrategy: 1 + fileIdsGeneration: 2 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + keepQuads: 0 + weldVertices: 1 + bakeAxisConversion: 1 + preserveHierarchy: 0 + skinWeightsMode: 0 + maxBonesPerVertex: 4 + minBoneWeight: 0.001 + optimizeBones: 1 + meshOptimizationFlags: -1 + indexFormat: 0 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVMarginMethod: 1 + secondaryUVMinLightmapResolution: 40 + secondaryUVMinObjectScale: 1 + secondaryUVPackMargin: 4 + useFileScale: 1 + strictVertexDataChecks: 0 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + normalCalculationMode: 4 + legacyComputeAllNormalsFromSmoothingGroupsWhenMeshHasBlendShapes: 0 + blendShapeNormalImportMode: 1 + normalSmoothingSource: 0 + referencedClips: [] + importAnimation: 1 + humanDescription: + serializedVersion: 3 + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + globalScale: 0.1 + rootMotionBoneName: + hasTranslationDoF: 0 + hasExtraRoot: 0 + skeletonHasParents: 1 + lastHumanDescriptionAvatarSource: {instanceID: 0} + autoGenerateAvatarMappingIfUnspecified: 1 + animationType: 2 + humanoidOversampling: 1 + avatarSetup: 0 + addHumanoidExtraRootOnlyWhenUsingAvatar: 1 + importBlendShapeDeformPercent: 1 + remapMaterialsIfMaterialImportModeIsNone: 0 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Towers/BaseTower.prefab b/Assets/Prefabs/Towers/BaseTower.prefab index 473ac0a..4764fc0 100644 --- a/Assets/Prefabs/Towers/BaseTower.prefab +++ b/Assets/Prefabs/Towers/BaseTower.prefab @@ -1,191 +1,70 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &4241178655744724118 -GameObject: +--- !u!1001 &61646009847259292 +PrefabInstance: m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 7523567070824087546} - - component: {fileID: 5439060163005320995} - - component: {fileID: 4540713304376874692} - - component: {fileID: 6795469177534142411} - m_Layer: 0 - m_Name: BaseTower - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &7523567070824087546 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4241178655744724118} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 2145028294596449649} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &5439060163005320995 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4241178655744724118} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &4540713304376874692 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4241178655744724118} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &6795469177534142411 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4241178655744724118} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 3 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} ---- !u!1 &4398724951968777500 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 2145028294596449649} - - component: {fileID: 4393199539658335282} - - component: {fileID: 3019045528950232983} - m_Layer: 0 - m_Name: UpIndicator - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &2145028294596449649 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4398724951968777500} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.625, z: 0} - m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} - m_ConstrainProportionsScale: 1 - m_Children: [] - m_Father: {fileID: 7523567070824087546} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &4393199539658335282 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4398724951968777500} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: e3bc062a72e91a9259a02cfbccc0bacb, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!33 &3019045528950232983 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4398724951968777500} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: -8679921383154817045, guid: eb5e13df78999ef878da1db5c63224e2, + type: 3} + propertyPath: m_LocalPosition.x + value: -2.74387 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: eb5e13df78999ef878da1db5c63224e2, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.08719492 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: eb5e13df78999ef878da1db5c63224e2, + type: 3} + propertyPath: m_LocalPosition.z + value: 3.3228698 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: eb5e13df78999ef878da1db5c63224e2, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: eb5e13df78999ef878da1db5c63224e2, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: eb5e13df78999ef878da1db5c63224e2, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: eb5e13df78999ef878da1db5c63224e2, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: eb5e13df78999ef878da1db5c63224e2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: eb5e13df78999ef878da1db5c63224e2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: -8679921383154817045, guid: eb5e13df78999ef878da1db5c63224e2, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 919132149155446097, guid: eb5e13df78999ef878da1db5c63224e2, + type: 3} + propertyPath: m_Name + value: 1ShootTower2 (1) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: eb5e13df78999ef878da1db5c63224e2, type: 3} diff --git a/Assets/Prefabs/Towers/BaseTower.prefab.meta b/Assets/Prefabs/Towers/BaseTower.prefab.meta index e42d5d4..031dca8 100644 --- a/Assets/Prefabs/Towers/BaseTower.prefab.meta +++ b/Assets/Prefabs/Towers/BaseTower.prefab.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c309e2ab8a7e17f049cee02d2d5e1af3 +guid: f54a14318952c90c5b47a300aedb0d15 PrefabImporter: externalObjects: {} userData: diff --git a/Assets/Prefabs/Towers/Turret.prefab b/Assets/Prefabs/Towers/Turret.prefab index 684eeeb..88c5ed2 100644 --- a/Assets/Prefabs/Towers/Turret.prefab +++ b/Assets/Prefabs/Towers/Turret.prefab @@ -1,6 +1,6 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!1 &3083473288927039800 +--- !u!1 &1909060460904820462 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -8,9 +8,9 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 4144966226015051435} - - component: {fileID: 3224375042761175994} - - component: {fileID: 72007931888250727} + - component: {fileID: 3688593234855359137} + - component: {fileID: 7215452495559205732} + - component: {fileID: 8981486734084153558} m_Layer: 0 m_Name: HorizontalArc m_TagString: Untagged @@ -18,30 +18,30 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &4144966226015051435 +--- !u!4 &3688593234855359137 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3083473288927039800} + m_GameObject: {fileID: 1909060460904820462} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 5637138106755445514} - m_Father: {fileID: 6499929602381336473} + - {fileID: 4562397451506195939} + m_Father: {fileID: 9116936080776508834} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!120 &3224375042761175994 +--- !u!120 &7215452495559205732 LineRenderer: serializedVersion: 2 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3083473288927039800} + m_GameObject: {fileID: 1909060460904820462} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -136,13 +136,13 @@ LineRenderer: m_UseWorldSpace: 1 m_Loop: 0 m_ApplyActiveColorSpace: 1 ---- !u!114 &72007931888250727 +--- !u!114 &8981486734084153558 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 3083473288927039800} + m_GameObject: {fileID: 1909060460904820462} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 907145a413a8aab36826e850743ffdcc, type: 3} @@ -151,11 +151,11 @@ MonoBehaviour: orientation: 0 samples: 15 visualRadius: 1 - knob: {fileID: 6989781039509307755} + knob: {fileID: 8756968480882234867} knobSensitiviy: 1 moveKnobAxisName: Mouse X rotationMinMax: {x: -30, y: 30} ---- !u!1 &4511371932741949226 +--- !u!1 &2485007193584062128 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -163,9 +163,247 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 2685035597097927690} - - component: {fileID: 3193646361492154326} - - component: {fileID: 5640598242552733345} + - component: {fileID: 1134124277600307769} + - component: {fileID: 5737168580623661280} + - component: {fileID: 432796252682377629} + - component: {fileID: 3370533879401949812} + - component: {fileID: 1398471167256814047} + m_Layer: 0 + m_Name: SliderKnob + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1134124277600307769 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2485007193584062128} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0.000000070586, y: 0.000000017498, z: 0.843} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 4508182228569071021} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &5737168580623661280 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2485007193584062128} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 1fb12e769af8dfc4b9c47b291e1da192, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &432796252682377629 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2485007193584062128} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!64 &3370533879401949812 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2485007193584062128} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1398471167256814047 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2485007193584062128} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9998882d4b72010a9b0ca2d8bd35835e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &3770528383299556987 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4562397451506195939} + - component: {fileID: 1552403747463715071} + - component: {fileID: 271800776993535811} + - component: {fileID: 1616640625290415239} + - component: {fileID: 8756968480882234867} + m_Layer: 0 + m_Name: SliderKnob + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4562397451506195939 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3770528383299556987} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0.843} + m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 3688593234855359137} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &1552403747463715071 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3770528383299556987} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 1fb12e769af8dfc4b9c47b291e1da192, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &271800776993535811 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3770528383299556987} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!64 &1616640625290415239 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3770528383299556987} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 5 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &8756968480882234867 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3770528383299556987} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9998882d4b72010a9b0ca2d8bd35835e, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &8350726662087383414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4508182228569071021} + - component: {fileID: 1366289561210151836} + - component: {fileID: 5247639431516572416} m_Layer: 0 m_Name: VerticalArc m_TagString: Untagged @@ -173,30 +411,30 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &2685035597097927690 +--- !u!4 &4508182228569071021 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4511371932741949226} + m_GameObject: {fileID: 8350726662087383414} serializedVersion: 2 - m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} - m_LocalPosition: {x: 0, y: 0.75, z: 0.1} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 8705600569309606266} - m_Father: {fileID: 6499929602381336473} - m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} ---- !u!120 &3193646361492154326 + - {fileID: 1134124277600307769} + m_Father: {fileID: 9116936080776508834} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!120 &1366289561210151836 LineRenderer: serializedVersion: 2 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4511371932741949226} + m_GameObject: {fileID: 8350726662087383414} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -291,13 +529,13 @@ LineRenderer: m_UseWorldSpace: 1 m_Loop: 0 m_ApplyActiveColorSpace: 1 ---- !u!114 &5640598242552733345 +--- !u!114 &5247639431516572416 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 4511371932741949226} + m_GameObject: {fileID: 8350726662087383414} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 907145a413a8aab36826e850743ffdcc, type: 3} @@ -306,11 +544,11 @@ MonoBehaviour: orientation: 1 samples: 15 visualRadius: 1 - knob: {fileID: 319728215962205379} + knob: {fileID: 1398471167256814047} knobSensitiviy: 1 moveKnobAxisName: Mouse Y rotationMinMax: {x: -30, y: 30} ---- !u!1 &5590613211210629988 +--- !u!1 &8708866392971799934 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -318,159 +556,52 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 8231444434154675001} - - component: {fileID: 3249777024242727896} - - component: {fileID: 7248559923621457761} - - component: {fileID: 8492018035124418673} + - component: {fileID: 2141594701022449211} + - component: {fileID: 3987931586699850031} m_Layer: 0 - m_Name: Barrel + m_Name: TrajectoryLine m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &8231444434154675001 +--- !u!4 &2141594701022449211 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5590613211210629988} + m_GameObject: {fileID: 8708866392971799934} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0.75, z: 0} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 6499929602381336473} + m_Father: {fileID: 9116936080776508834} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!33 &3249777024242727896 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5590613211210629988} - m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} ---- !u!23 &7248559923621457761 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5590613211210629988} - m_Enabled: 0 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &8492018035124418673 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 5590613211210629988} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 0 - serializedVersion: 3 - m_Size: {x: 0.99999976, y: 1, z: 0.99999976} - m_Center: {x: -7.1054274e-15, y: 0, z: 0.000000059604638} ---- !u!1 &6053249415262728388 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 8705600569309606266} - - component: {fileID: 3265041720031347224} - - component: {fileID: 5182623784987730361} - - component: {fileID: 9197055104184844621} - - component: {fileID: 319728215962205379} - m_Layer: 0 - m_Name: SliderKnob - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &8705600569309606266 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6053249415262728388} +--- !u!120 &3987931586699850031 +LineRenderer: serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0.000000070586, y: 0.000000017498, z: 0.843} - m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} - m_ConstrainProportionsScale: 1 - m_Children: [] - m_Father: {fileID: 2685035597097927690} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &3265041720031347224 -MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6053249415262728388} + m_GameObject: {fileID: 8708866392971799934} m_Enabled: 1 - m_CastShadows: 1 + m_CastShadows: 0 m_ReceiveShadows: 1 m_DynamicOccludee: 1 m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 + m_MotionVectors: 0 + m_LightProbeUsage: 0 + m_ReflectionProbeUsage: 0 + m_RayTracingMode: 0 m_RayTraceProcedural: 0 m_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: - - {fileID: 2100000, guid: 1fb12e769af8dfc4b9c47b291e1da192, type: 2} + - {fileID: 10306, guid: 0000000000000000f000000000000000, type: 0} m_StaticBatchInfo: firstSubMesh: 0 subMeshCount: 0 @@ -491,169 +622,67 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!33 &5182623784987730361 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6053249415262728388} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!64 &9197055104184844621 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6053249415262728388} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 5 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!114 &319728215962205379 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 6053249415262728388} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9998882d4b72010a9b0ca2d8bd35835e, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &8582801154640721559 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 5637138106755445514} - - component: {fileID: 6057977207758474935} - - component: {fileID: 1328201225010837278} - - component: {fileID: 6433205082115147417} - - component: {fileID: 6989781039509307755} - m_Layer: 0 - m_Name: SliderKnob - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &5637138106755445514 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8582801154640721559} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0.843} - m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} - m_ConstrainProportionsScale: 1 - m_Children: [] - m_Father: {fileID: 4144966226015051435} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!23 &6057977207758474935 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8582801154640721559} - m_Enabled: 1 - m_CastShadows: 1 - m_ReceiveShadows: 1 - m_DynamicOccludee: 1 - m_StaticShadowCaster: 0 - m_MotionVectors: 1 - m_LightProbeUsage: 1 - m_ReflectionProbeUsage: 1 - m_RayTracingMode: 2 - m_RayTraceProcedural: 0 - m_RenderingLayerMask: 1 - m_RendererPriority: 0 - m_Materials: - - {fileID: 2100000, guid: 1fb12e769af8dfc4b9c47b291e1da192, type: 2} - m_StaticBatchInfo: - firstSubMesh: 0 - subMeshCount: 0 - m_StaticBatchRoot: {fileID: 0} - m_ProbeAnchor: {fileID: 0} - m_LightProbeVolumeOverride: {fileID: 0} - m_ScaleInLightmap: 1 - m_ReceiveGI: 1 - m_PreserveUVs: 0 - m_IgnoreNormalsForChartDetection: 0 - m_ImportantGI: 0 - m_StitchLightmapSeams: 1 - m_SelectedEditorRenderState: 3 - m_MinimumChartSize: 4 - m_AutoUVMaxDistance: 0.5 - m_AutoUVMaxAngle: 89 - m_LightmapParameters: {fileID: 0} - m_SortingLayerID: 0 - m_SortingLayer: 0 - m_SortingOrder: 0 - m_AdditionalVertexStreams: {fileID: 0} ---- !u!33 &1328201225010837278 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8582801154640721559} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!64 &6433205082115147417 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8582801154640721559} - m_Material: {fileID: 0} - m_IncludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_ExcludeLayers: - serializedVersion: 2 - m_Bits: 0 - m_LayerOverridePriority: 0 - m_IsTrigger: 0 - m_ProvidesContacts: 0 - m_Enabled: 1 - serializedVersion: 5 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!114 &6989781039509307755 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 8582801154640721559} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9998882d4b72010a9b0ca2d8bd35835e, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1001 &3629188724500721763 + m_Positions: [] + m_Parameters: + serializedVersion: 3 + widthMultiplier: 1 + widthCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0.19745255 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.33333334 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_ColorSpace: -1 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + numCornerVertices: 0 + numCapVertices: 0 + alignment: 0 + textureMode: 0 + textureScale: {x: 1, y: 1} + shadowBias: 0 + generateLightingData: 0 + m_MaskInteraction: 0 + m_UseWorldSpace: 1 + m_Loop: 0 + m_ApplyActiveColorSpace: 1 +--- !u!1001 &8778754593817981653 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 @@ -661,231 +690,137 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 639897978325975064, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Positions.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 639897978325975064, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.colorGradient.key0.b - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 639897978325975064, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.colorGradient.key0.g - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 639897978325975064, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.colorGradient.key0.r - value: 0.30863357 - objectReference: {fileID: 0} - - target: {fileID: 639897978325975064, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.colorGradient.key1.b - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 639897978325975064, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.colorGradient.key1.r - value: 0.30980393 - objectReference: {fileID: 0} - - target: {fileID: 639897978325975064, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.colorGradient.m_Mode - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 639897978325975064, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.colorGradient.m_ColorSpace - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 639897978325975064, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.widthCurve.m_Curve.Array.data[0].value - value: 0.14800072 - objectReference: {fileID: 0} - - target: {fileID: 1425401315373935596, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: orientation - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 1842811169542586225, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: rotationMinMax.x - value: -38.7 - objectReference: {fileID: 0} - - target: {fileID: 4241178655744724118, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Name - value: Turret - objectReference: {fileID: 0} - - target: {fileID: 6795469177534142411, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Enabled - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7523567070824087546, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalPosition.x - value: -0.12817177 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7523567070824087546, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalPosition.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 7523567070824087546, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalPosition.z - value: 0.34760666 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7523567070824087546, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalRotation.w - value: 0.5129842 + value: 1 objectReference: {fileID: 0} - - target: {fileID: 7523567070824087546, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalRotation.x - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7523567070824087546, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalRotation.y - value: 0.858398 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7523567070824087546, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalRotation.z - value: -0 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7523567070824087546, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 7523567070824087546, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalEulerAnglesHint.y - value: 118.274 + value: 0 objectReference: {fileID: 0} - - target: {fileID: 7523567070824087546, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 7730797280345979287, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - target: {fileID: 817228733949022968, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} - propertyPath: m_IsActive - value: 1 + propertyPath: m_Name + value: Base objectReference: {fileID: 0} - - target: {fileID: 8501533562697966838, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - target: {fileID: 872127579833310669, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} - propertyPath: m_Positions.Array.size - value: 0 + propertyPath: m_Name + value: Turret objectReference: {fileID: 0} - - target: {fileID: 8501533562697966838, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - target: {fileID: 8365322460670124409, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} - propertyPath: m_Parameters.colorGradient.key0.b - value: 0 + propertyPath: m_Name + value: Barrel objectReference: {fileID: 0} - - target: {fileID: 8501533562697966838, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - target: {fileID: 8650694973862404236, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} - propertyPath: m_Parameters.colorGradient.key0.g - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8501533562697966838, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.colorGradient.key0.r - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8501533562697966838, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.colorGradient.key1.b - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8501533562697966838, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.colorGradient.key1.g - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8501533562697966838, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.colorGradient.key1.r - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8501533562697966838, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.colorGradient.m_Mode - value: 1 - objectReference: {fileID: 0} - - target: {fileID: 8501533562697966838, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.colorGradient.m_ColorSpace - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 8501533562697966838, guid: c309e2ab8a7e17f049cee02d2d5e1af3, - type: 3} - propertyPath: m_Parameters.widthCurve.m_Curve.Array.data[0].value - value: 0.20800006 + propertyPath: m_Name + value: Head objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: - - targetCorrespondingSourceObject: {fileID: 7523567070824087546, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - targetCorrespondingSourceObject: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} insertIndex: -1 - addedObject: {fileID: 2685035597097927690} - - targetCorrespondingSourceObject: {fileID: 7523567070824087546, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + addedObject: {fileID: 2141594701022449211} + - targetCorrespondingSourceObject: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} insertIndex: -1 - addedObject: {fileID: 8231444434154675001} - - targetCorrespondingSourceObject: {fileID: 7523567070824087546, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + addedObject: {fileID: 4508182228569071021} + - targetCorrespondingSourceObject: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} insertIndex: -1 - addedObject: {fileID: 4144966226015051435} + addedObject: {fileID: 3688593234855359137} m_AddedComponents: - - targetCorrespondingSourceObject: {fileID: 4241178655744724118, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + - targetCorrespondingSourceObject: {fileID: 872127579833310669, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} insertIndex: -1 - addedObject: {fileID: 5440735504016821781} - - targetCorrespondingSourceObject: {fileID: 4241178655744724118, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + addedObject: {fileID: 5888942256506690542} + - targetCorrespondingSourceObject: {fileID: 872127579833310669, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} insertIndex: -1 - addedObject: {fileID: 7323039027591738477} - - targetCorrespondingSourceObject: {fileID: 4241178655744724118, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + addedObject: {fileID: 4899864418954658791} + - targetCorrespondingSourceObject: {fileID: 872127579833310669, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} insertIndex: -1 - addedObject: {fileID: 841175348891104259} - m_SourcePrefab: {fileID: 100100000, guid: c309e2ab8a7e17f049cee02d2d5e1af3, type: 3} ---- !u!1 &614396578925772021 stripped + addedObject: {fileID: 7437064479105606814} + m_SourcePrefab: {fileID: 100100000, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} +--- !u!1 &991916436778619820 stripped GameObject: - m_CorrespondingSourceObject: {fileID: 4241178655744724118, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + m_CorrespondingSourceObject: {fileID: 8365322460670124409, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} - m_PrefabInstance: {fileID: 3629188724500721763} + m_PrefabInstance: {fileID: 8778754593817981653} m_PrefabAsset: {fileID: 0} ---- !u!114 &5440735504016821781 +--- !u!1 &8488737342646939416 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 872127579833310669, guid: f54a14318952c90c5b47a300aedb0d15, + type: 3} + m_PrefabInstance: {fileID: 8778754593817981653} + m_PrefabAsset: {fileID: 0} +--- !u!114 &5888942256506690542 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 614396578925772021} + m_GameObject: {fileID: 8488737342646939416} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: f10d9733c7bd6bfd7ad6ba157ed4dd18, type: 3} m_Name: m_EditorClassIdentifier: delayBetweenBulletSequences: 0.1 ---- !u!114 &7323039027591738477 +--- !u!114 &4899864418954658791 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 614396578925772021} + m_GameObject: {fileID: 8488737342646939416} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 62293fbacde88045196dca1e291b5f23, type: 3} @@ -898,32 +833,28 @@ MonoBehaviour: OnHealthChange: m_PersistentCalls: m_Calls: [] ---- !u!114 &841175348891104259 +--- !u!114 &7437064479105606814 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 614396578925772021} + m_GameObject: {fileID: 8488737342646939416} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 3c6fb039e74d12a7bbfde22591bc7eee, type: 3} m_Name: m_EditorClassIdentifier: - horizontalArc: {fileID: 72007931888250727} - verticalArc: {fileID: 5640598242552733345} - attackSecondsDelay: 20 - projectileSequence: - - Arc: 0 - Amount: 1 - Speed: 100 - bulletPrefab: {fileID: 0} - Burst: 0 - BurstDelay: 0 - barrel: {fileID: 5590613211210629988} ---- !u!4 &6499929602381336473 stripped + horizontalArc: {fileID: 8981486734084153558} + verticalArc: {fileID: 5247639431516572416} + attackSecondsDelay: 10 + projectileSequence: [] + barrel: {fileID: 991916436778619820} + trajectory: {fileID: 3987931586699850031} + trajectoryBounces: 4 +--- !u!4 &9116936080776508834 stripped Transform: - m_CorrespondingSourceObject: {fileID: 7523567070824087546, guid: c309e2ab8a7e17f049cee02d2d5e1af3, + m_CorrespondingSourceObject: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} - m_PrefabInstance: {fileID: 3629188724500721763} + m_PrefabInstance: {fileID: 8778754593817981653} m_PrefabAsset: {fileID: 0} diff --git a/Assets/Scenes/TowerTest.unity b/Assets/Scenes/TowerTest.unity index 75bb325..ca52e04 100644 --- a/Assets/Scenes/TowerTest.unity +++ b/Assets/Scenes/TowerTest.unity @@ -209,13 +209,13 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 330585543} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -2.6} + m_LocalRotation: {x: 0.17984354, y: -0.2199579, z: 0.04129667, w: 0.95789844} + m_LocalPosition: {x: 0.989, y: 1.63, z: -2.004} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 21.267, y: -25.865, z: 0} --- !u!114 &330585547 MonoBehaviour: m_ObjectHideFlags: 0 @@ -378,6 +378,216 @@ MonoBehaviour: m_LightCookieSize: {x: 1, y: 1} m_LightCookieOffset: {x: 0, y: 0} m_SoftShadowQuality: 1 +--- !u!1 &643774939 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 643774943} + - component: {fileID: 643774942} + - component: {fileID: 643774941} + - component: {fileID: 643774940} + m_Layer: 0 + m_Name: Wall (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &643774940 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 643774939} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &643774941 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 643774939} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &643774942 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 643774939} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &643774943 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 643774939} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: 8.81, y: 0, z: 5.15} + m_LocalScale: {x: 18.010532, y: 21.082876, z: 0.17439} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!1 &769011490 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 769011494} + - component: {fileID: 769011493} + - component: {fileID: 769011492} + - component: {fileID: 769011491} + m_Layer: 0 + m_Name: Wall + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &769011491 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 769011490} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &769011492 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 769011490} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &769011493 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 769011490} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &769011494 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 769011490} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -4.1} + m_LocalScale: {x: 18.010532, y: 21.082876, z: 0.17439} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &832575517 GameObject: m_ObjectHideFlags: 0 @@ -445,6 +655,41 @@ PrefabInstance: propertyPath: projectileSequence.Array.data[0].bulletPrefab value: objectReference: {fileID: 1006877822} + - target: {fileID: 963397980498552487, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_Materials.Array.data[0] + value: + objectReference: {fileID: 2100000, guid: 9896f9d54cb5db749bd49b9da446a549, type: 2} + - target: {fileID: 4508182228569071021, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalPosition.x + value: -0.154 + objectReference: {fileID: 0} + - target: {fileID: 4508182228569071021, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.433 + objectReference: {fileID: 0} + - target: {fileID: 4508182228569071021, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalPosition.z + value: -0.237 + objectReference: {fileID: 0} + - target: {fileID: 4508182228569071021, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4508182228569071021, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalRotation.z + value: -0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 4508182228569071021, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: -90 + objectReference: {fileID: 0} - target: {fileID: 6499929602381336473, guid: 9415cb10a1bd579269301ca4f61a1554, type: 3} propertyPath: m_LocalPosition.x @@ -453,7 +698,7 @@ PrefabInstance: - target: {fileID: 6499929602381336473, guid: 9415cb10a1bd579269301ca4f61a1554, type: 3} propertyPath: m_LocalPosition.y - value: 0 + value: 0.73 objectReference: {fileID: 0} - target: {fileID: 6499929602381336473, guid: 9415cb10a1bd579269301ca4f61a1554, type: 3} @@ -495,6 +740,46 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 7437064479105606814, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: barrel + value: + objectReference: {fileID: 1890448162} + - target: {fileID: 7437064479105606814, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: attackSecondsDelay + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalPosition.y + value: 0.875 + objectReference: {fileID: 0} + - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalRotation.y + value: 0.7071068 + objectReference: {fileID: 0} + - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 90 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] @@ -506,6 +791,432 @@ GameObject: type: 3} m_PrefabInstance: {fileID: 667212637924654954} m_PrefabAsset: {fileID: 0} +--- !u!1 &1085503232 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1085503236} + - component: {fileID: 1085503235} + - component: {fileID: 1085503234} + - component: {fileID: 1085503233} + m_Layer: 0 + m_Name: Wall (4) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1085503233 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085503232} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1085503234 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085503232} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1085503235 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085503232} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1085503236 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1085503232} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: -8.38, y: 0, z: 4.34} + m_LocalScale: {x: 18.010532, y: 21.082876, z: 0.17439} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!1 &1197417724 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1197417728} + - component: {fileID: 1197417727} + - component: {fileID: 1197417726} + - component: {fileID: 1197417725} + m_Layer: 0 + m_Name: Wall (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1197417725 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1197417724} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1197417726 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1197417724} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1197417727 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1197417724} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1197417728 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1197417724} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 13.76} + m_LocalScale: {x: 18.010532, y: 21.082876, z: 0.17439} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1621186629 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1621186633} + - component: {fileID: 1621186632} + - component: {fileID: 1621186631} + - component: {fileID: 1621186630} + m_Layer: 0 + m_Name: Wall (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1621186630 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1621186629} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1621186631 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1621186629} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1621186632 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1621186629} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1621186633 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1621186629} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0, z: 4.88} + m_LocalScale: {x: 18.010532, y: 21.082876, z: 0.17439} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!1 &1797347348 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1797347352} + - component: {fileID: 1797347351} + - component: {fileID: 1797347350} + - component: {fileID: 1797347349} + m_Layer: 0 + m_Name: Wall (5) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &1797347349 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1797347348} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1797347350 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1797347348} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1797347351 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1797347348} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &1797347352 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1797347348} + serializedVersion: 2 + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 9.4, z: 4.88} + m_LocalScale: {x: 18.010532, y: 21.082876, z: 0.17439} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!1 &1890448162 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 7625877907635197182, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + m_PrefabInstance: {fileID: 891862850} + m_PrefabAsset: {fileID: 0} --- !u!1001 &667212637924654954 PrefabInstance: m_ObjectHideFlags: 0 @@ -583,3 +1294,9 @@ SceneRoots: - {fileID: 832575519} - {fileID: 891862850} - {fileID: 667212637924654954} + - {fileID: 769011494} + - {fileID: 1197417728} + - {fileID: 643774943} + - {fileID: 1085503236} + - {fileID: 1621186633} + - {fileID: 1797347352} diff --git a/Assets/Scripts/Tower/Projectile.cs b/Assets/Scripts/Tower/Projectile.cs new file mode 100644 index 0000000..a82b6f8 --- /dev/null +++ b/Assets/Scripts/Tower/Projectile.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using UnityEngine.Assertions; + +[RequireComponent(typeof(Collider))] +public class Projectile : MonoBehaviour +{ + [SerializeField, Range(0f, 1f)] + private float bounciness = 0.5f; + + private Collider projCol; + + private void Awake() + { + projCol = GetComponent(); + Assert.IsNotNull(projCol); + + PhysicMaterial pMat = new(); + pMat.bounciness = this.bounciness; + + projCol.material = pMat; + } +} diff --git a/Assets/Scripts/Tower/Projectile.cs.meta b/Assets/Scripts/Tower/Projectile.cs.meta new file mode 100644 index 0000000..faaa765 --- /dev/null +++ b/Assets/Scripts/Tower/Projectile.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a98521a4b559621438fc196adc605f3b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tower/ProjectileTower.cs b/Assets/Scripts/Tower/ProjectileTower.cs index bee2320..7b3c033 100644 --- a/Assets/Scripts/Tower/ProjectileTower.cs +++ b/Assets/Scripts/Tower/ProjectileTower.cs @@ -1,5 +1,6 @@ using System; using System.Collections; +using System.Collections.Generic; using UnityEngine; using UnityEngine.Assertions; @@ -9,6 +10,9 @@ public class ProjectileTower : Tower [SerializeField, Range(0.01f, 20f)] private float attackSecondsDelay = 1f; [SerializeField] private ProjectilePattern[] projectileSequence; [SerializeField] private GameObject barrel; + [SerializeField] private LineRenderer trajectory; + [SerializeField] private int trajectoryBounces = 2; + private const float k_trajectory_maxdist = 100f; private ProjectileSpawner projectileSpawner; @@ -24,10 +28,39 @@ public class ProjectileTower : Tower horizontalArc.Value.AddListener(UpdateBarrelRotation); verticalArc.Value.AddListener(UpdateBarrelRotation); + horizontalArc.Value.AddListener(UpdateTrajectory); + verticalArc.Value.AddListener(UpdateTrajectory); + UpdateBarrelRotation(); + UpdateTrajectory(); StartCoroutine(AttackLoop()); } + private void UpdateTrajectory(float unused) => UpdateTrajectory(); + + private void UpdateTrajectory() + { + if (trajectory == null) return; + + // TODO: change to barrel tip + Vector3 origin = transform.position; + Vector3 dir = AimDirection; + List pointsInTrajectory = new(); + for (int i = 0; i < trajectoryBounces; i++) + { + RaycastHit hit; + if (!Physics.Raycast(origin, dir, out hit, k_trajectory_maxdist)) + break; + + pointsInTrajectory.Add(hit.point); + dir = Vector3.Reflect(dir, hit.normal); + origin = hit.point; + } + + trajectory.positionCount = pointsInTrajectory.Count; + trajectory.SetPositions(pointsInTrajectory.ToArray()); + } + protected override void OnDestroy() { horizontalArc.Value.RemoveListener(UpdateBarrelRotation); @@ -51,6 +84,6 @@ public class ProjectileTower : Tower // Rotate barrel to match rotation private void UpdateBarrelRotation() { - barrel.transform.rotation = Quaternion.Euler(verticalArc.Value, horizontalArc.Value, 0f); + barrel.transform.localRotation = Quaternion.Euler(verticalArc.Value, horizontalArc.Value, 0f); } } diff --git a/Assets/Scripts/Tower/Tower.cs b/Assets/Scripts/Tower/Tower.cs index 5b38fe2..aeeb8b4 100644 --- a/Assets/Scripts/Tower/Tower.cs +++ b/Assets/Scripts/Tower/Tower.cs @@ -4,6 +4,8 @@ using UnityEngine.Assertions; [RequireComponent(typeof(HealthComponent))] public abstract class Tower : MonoBehaviour { + public bool towerSelected { get; set; } = true; + [SerializeField] protected EditableArc horizontalArc; [SerializeField] protected EditableArc verticalArc; diff --git a/Assets/Scripts/Utilities/EditableArc.cs b/Assets/Scripts/Utilities/EditableArc.cs index 2e3ec54..471ada0 100644 --- a/Assets/Scripts/Utilities/EditableArc.cs +++ b/Assets/Scripts/Utilities/EditableArc.cs @@ -24,8 +24,8 @@ public class EditableArc : MonoBehaviour public Observer Value { get; private set; } = new(0); public Vector2 RotationMinMax => rotationMinMax; - public Vector3 normal => orientation == ArcOrientation.HORIZONTAL ? transform.up : transform.right; - public Vector3 tangent => orientation == ArcOrientation.HORIZONTAL ? transform.right : transform.up; + public Vector3 normal => orientation == ArcOrientation.HORIZONTAL ? transform.up : transform.forward; + public Vector3 tangent => orientation == ArcOrientation.HORIZONTAL ? transform.forward : transform.up; public Vector3 ToKnobVector => Quaternion.AngleAxis(Value.Value, normal) * tangent; From c36dde727833ee6a433dab911db86e251aded4b2 Mon Sep 17 00:00:00 2001 From: BOT Alex <44818698+MagicBOTAlex@users.noreply.github.com> Date: Sat, 20 Apr 2024 16:27:58 +0200 Subject: [PATCH 3/7] Debug turrets now placable --- .../Prefabs/PlacementSystem/DebugTower.prefab | 495 ++++++++++++++++++ .../PlacementSystem/DebugTower.prefab.meta | 7 + .../Prefabs/PlacementSystem/SlotHolder.prefab | 33 ++ Assets/Scenes/TowerPlacement.unity | 81 ++- Assets/Scripts/PlacementSystem/GridManager.cs | 3 + .../PlacementSystem/PlacementManager.cs | 10 + Assets/Scripts/PlacementSystem/SlotManager.cs | 2 + 7 files changed, 629 insertions(+), 2 deletions(-) create mode 100644 Assets/Prefabs/PlacementSystem/DebugTower.prefab create mode 100644 Assets/Prefabs/PlacementSystem/DebugTower.prefab.meta diff --git a/Assets/Prefabs/PlacementSystem/DebugTower.prefab b/Assets/Prefabs/PlacementSystem/DebugTower.prefab new file mode 100644 index 0000000..40fc692 --- /dev/null +++ b/Assets/Prefabs/PlacementSystem/DebugTower.prefab @@ -0,0 +1,495 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1927189479841411320 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1570388884369451947} + m_Layer: 0 + m_Name: DebugTower + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1570388884369451947 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1927189479841411320} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2104365434622187592} + - {fileID: 6967282824378109353} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &4761108802466894686 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7176366041921953677} + - component: {fileID: 8534545462036982482} + - component: {fileID: 7457221564538566549} + - component: {fileID: 5614805668917730068} + m_Layer: 0 + m_Name: Visualiers up + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7176366041921953677 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4761108802466894686} + serializedVersion: 2 + m_LocalRotation: {x: 0.000000012853899, y: 0.7071068, z: -0.00000000204726, w: 0.7071068} + m_LocalPosition: {x: 0, y: 0.5, z: 0} + m_LocalScale: {x: 0.05, y: 0.5, z: 0.05} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2104365434622187592} + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} +--- !u!33 &8534545462036982482 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4761108802466894686} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &7457221564538566549 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4761108802466894686} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 9896f9d54cb5db749bd49b9da446a549, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &5614805668917730068 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4761108802466894686} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5000001 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} +--- !u!1 &4969726532295776223 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7271692600010405860} + - component: {fileID: 511048481404705008} + - component: {fileID: 7498875656575277724} + - component: {fileID: 8614542120192848051} + m_Layer: 0 + m_Name: Visualiers red + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7271692600010405860 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4969726532295776223} + serializedVersion: 2 + m_LocalRotation: {x: 0.5, y: 0.5, z: -0.5, w: 0.5} + m_LocalPosition: {x: 0.5, y: 0, z: 0} + m_LocalScale: {x: 0.05, y: 0.5, z: 0.05} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2104365434622187592} + m_LocalEulerAnglesHint: {x: 90, y: 90, z: 0} +--- !u!33 &511048481404705008 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4969726532295776223} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &7498875656575277724 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4969726532295776223} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: e3bc062a72e91a9259a02cfbccc0bacb, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &8614542120192848051 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4969726532295776223} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5000001 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} +--- !u!1 &5013614695606587358 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2372839431522012905} + - component: {fileID: 8800360244534638689} + - component: {fileID: 5687226641975350989} + - component: {fileID: 6597320192810856226} + m_Layer: 0 + m_Name: Visualiers blue + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2372839431522012905 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5013614695606587358} + serializedVersion: 2 + m_LocalRotation: {x: 0.70710576, y: -0, z: -0, w: 0.7071079} + m_LocalPosition: {x: 0, y: 0, z: 0.5} + m_LocalScale: {x: 0.05, y: 0.5, z: 0.05} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2104365434622187592} + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!33 &8800360244534638689 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5013614695606587358} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &5687226641975350989 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5013614695606587358} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 453df639b86494041b3526d57bb2968c, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!136 &6597320192810856226 +CapsuleCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5013614695606587358} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5000001 + m_Height: 2 + m_Direction: 1 + m_Center: {x: 0.000000059604645, y: 0, z: -0.00000008940697} +--- !u!1 &5820549086877647518 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2104365434622187592} + m_Layer: 0 + m_Name: DirectionVisualizers + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2104365434622187592 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5820549086877647518} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 2372839431522012905} + - {fileID: 7271692600010405860} + - {fileID: 7176366041921953677} + m_Father: {fileID: 1570388884369451947} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8051338397872587616 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6967282824378109353} + - component: {fileID: 811593866133597657} + - component: {fileID: 6487310826091106751} + - component: {fileID: 2955693101142422123} + m_Layer: 0 + m_Name: BaseTower + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6967282824378109353 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8051338397872587616} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1570388884369451947} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &811593866133597657 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8051338397872587616} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6487310826091106751 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8051338397872587616} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!65 &2955693101142422123 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8051338397872587616} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} diff --git a/Assets/Prefabs/PlacementSystem/DebugTower.prefab.meta b/Assets/Prefabs/PlacementSystem/DebugTower.prefab.meta new file mode 100644 index 0000000..043d798 --- /dev/null +++ b/Assets/Prefabs/PlacementSystem/DebugTower.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 60899c8a0efa6f74393d369a109d82c3 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/PlacementSystem/SlotHolder.prefab b/Assets/Prefabs/PlacementSystem/SlotHolder.prefab index 3acae3f..df60517 100644 --- a/Assets/Prefabs/PlacementSystem/SlotHolder.prefab +++ b/Assets/Prefabs/PlacementSystem/SlotHolder.prefab @@ -137,6 +137,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 740402109726759244} + - {fileID: 3521410157466494107} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &5087905053802543442 @@ -154,3 +155,35 @@ MonoBehaviour: spawnerRef: {fileID: 0} x: 0 y: 0 + TowerSpawnPoint: {fileID: 3521410157466494107} +--- !u!1 &7250711439930445084 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3521410157466494107} + m_Layer: 6 + m_Name: TowerSpawnPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3521410157466494107 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7250711439930445084} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 7515572981473435671} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Scenes/TowerPlacement.unity b/Assets/Scenes/TowerPlacement.unity index aeabef2..990dd16 100644 --- a/Assets/Scenes/TowerPlacement.unity +++ b/Assets/Scenes/TowerPlacement.unity @@ -154,6 +154,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 268589088} + - {fileID: 1287631730} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &444481 @@ -168,6 +169,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: acef1d7c80f784543acd3e1571e99495, type: 3} m_Name: m_EditorClassIdentifier: + DebugTowerPrefab: {fileID: 1927189479841411320, guid: 60899c8a0efa6f74393d369a109d82c3, + type: 3} --- !u!4 &268589088 stripped Transform: m_CorrespondingSourceObject: {fileID: 2739991145043243501, guid: 0c13e24f92c86f84a85c76e0bca22830, @@ -292,6 +295,12 @@ MonoBehaviour: m_LightCookieSize: {x: 1, y: 1} m_LightCookieOffset: {x: 0, y: 0} m_SoftShadowQuality: 0 +--- !u!4 &1287631730 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 2739991145043243501, guid: 0c13e24f92c86f84a85c76e0bca22830, + type: 3} + m_PrefabInstance: {fileID: 1625022535} + m_PrefabAsset: {fileID: 0} --- !u!1 &1508047062 GameObject: m_ObjectHideFlags: 0 @@ -379,13 +388,13 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1508047062} serializedVersion: 2 - m_LocalRotation: {x: 0.38268322, y: -0, z: -0, w: 0.9238797} + m_LocalRotation: {x: 0.2582012, y: -0, z: -0, w: 0.96609116} m_LocalPosition: {x: 3.21, y: 3.89, z: 0.81} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 45, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 29.927, y: 0, z: 0} --- !u!114 &1508047066 MonoBehaviour: m_ObjectHideFlags: 0 @@ -446,6 +455,74 @@ MonoBehaviour: layerMask: serializedVersion: 2 m_Bits: 64 +--- !u!1001 &1625022535 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 444480} + m_Modifications: + - target: {fileID: 2739991145043243501, guid: 0c13e24f92c86f84a85c76e0bca22830, + type: 3} + propertyPath: m_LocalPosition.x + value: 5 + objectReference: {fileID: 0} + - target: {fileID: 2739991145043243501, guid: 0c13e24f92c86f84a85c76e0bca22830, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 2739991145043243501, guid: 0c13e24f92c86f84a85c76e0bca22830, + type: 3} + propertyPath: m_LocalPosition.z + value: 5.75 + objectReference: {fileID: 0} + - target: {fileID: 2739991145043243501, guid: 0c13e24f92c86f84a85c76e0bca22830, + type: 3} + propertyPath: m_LocalRotation.w + value: 0.93753994 + objectReference: {fileID: 0} + - target: {fileID: 2739991145043243501, guid: 0c13e24f92c86f84a85c76e0bca22830, + type: 3} + propertyPath: m_LocalRotation.x + value: -0.25743157 + objectReference: {fileID: 0} + - target: {fileID: 2739991145043243501, guid: 0c13e24f92c86f84a85c76e0bca22830, + type: 3} + propertyPath: m_LocalRotation.y + value: -0.17669018 + objectReference: {fileID: 0} + - target: {fileID: 2739991145043243501, guid: 0c13e24f92c86f84a85c76e0bca22830, + type: 3} + propertyPath: m_LocalRotation.z + value: 0.15339008 + objectReference: {fileID: 0} + - target: {fileID: 2739991145043243501, guid: 0c13e24f92c86f84a85c76e0bca22830, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: -25.372 + objectReference: {fileID: 0} + - target: {fileID: 2739991145043243501, guid: 0c13e24f92c86f84a85c76e0bca22830, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: -27.006 + objectReference: {fileID: 0} + - target: {fileID: 2739991145043243501, guid: 0c13e24f92c86f84a85c76e0bca22830, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 24.772 + objectReference: {fileID: 0} + - target: {fileID: 4738812082694162819, guid: 0c13e24f92c86f84a85c76e0bca22830, + type: 3} + propertyPath: m_Name + value: GridSpawner (1) + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 0c13e24f92c86f84a85c76e0bca22830, type: 3} --- !u!1001 &8480757413362724446 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/PlacementSystem/GridManager.cs b/Assets/Scripts/PlacementSystem/GridManager.cs index 73609a3..d937eba 100644 --- a/Assets/Scripts/PlacementSystem/GridManager.cs +++ b/Assets/Scripts/PlacementSystem/GridManager.cs @@ -13,6 +13,9 @@ public class GridManager : MonoBehaviour [DoNotSerialize] public List SpawnedSlots = new(); + /// + /// Not implimented + /// [DoNotSerialize] public string[,] GridStates; private void OnEnable() diff --git a/Assets/Scripts/PlacementSystem/PlacementManager.cs b/Assets/Scripts/PlacementSystem/PlacementManager.cs index 9095ef8..9b97d6f 100644 --- a/Assets/Scripts/PlacementSystem/PlacementManager.cs +++ b/Assets/Scripts/PlacementSystem/PlacementManager.cs @@ -15,6 +15,9 @@ public class TowerPlacementManager : MonoBehaviour // Section: Selection private SlotManager CurrentSelected; + // Section: Debug + public GameObject DebugTowerPrefab; + private void Start() { if (Singleton != this) @@ -28,6 +31,8 @@ public class TowerPlacementManager : MonoBehaviour { slot.gameObject.GetComponentInChildren().material.color = Color.blue; OnSelectSlot(slot); + + SpawnTowerAtSelected(DebugTowerPrefab); } // Called when a slot is selected @@ -46,4 +51,9 @@ public class TowerPlacementManager : MonoBehaviour { prevSlot.gameObject.GetComponentInChildren().material.color = Color.white; } + + public void SpawnTowerAtSelected(GameObject towerPrefab) + { + Instantiate(towerPrefab, CurrentSelected.transform); + } } diff --git a/Assets/Scripts/PlacementSystem/SlotManager.cs b/Assets/Scripts/PlacementSystem/SlotManager.cs index 9cb1121..d52496e 100644 --- a/Assets/Scripts/PlacementSystem/SlotManager.cs +++ b/Assets/Scripts/PlacementSystem/SlotManager.cs @@ -9,6 +9,8 @@ public class SlotManager : MonoBehaviour public int x; public int y; + public Transform TowerSpawnPoint; + /// /// (Sender, spawnerRef, X, Y) /// From 4e68e8bd46ae0a2a84406c97fbf39e5da912bab1 Mon Sep 17 00:00:00 2001 From: Sveske Juice Date: Sat, 20 Apr 2024 16:28:46 +0200 Subject: [PATCH 4/7] temp trajectory path --- Assets/Prefabs/Towers/Turret.prefab | 82 ++++++++++++--- Assets/Scenes/TowerTest.unity | 126 ++++-------------------- Assets/Scripts/Tower/Barrel.cs | 9 ++ Assets/Scripts/Tower/Barrel.cs.meta | 11 +++ Assets/Scripts/Tower/ProjectileTower.cs | 9 +- 5 files changed, 112 insertions(+), 125 deletions(-) create mode 100644 Assets/Scripts/Tower/Barrel.cs create mode 100644 Assets/Scripts/Tower/Barrel.cs.meta diff --git a/Assets/Prefabs/Towers/Turret.prefab b/Assets/Prefabs/Towers/Turret.prefab index 88c5ed2..64543f4 100644 --- a/Assets/Prefabs/Towers/Turret.prefab +++ b/Assets/Prefabs/Towers/Turret.prefab @@ -393,6 +393,37 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 9998882d4b72010a9b0ca2d8bd35835e, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &3857615556319596175 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2164222606230954140} + m_Layer: 0 + m_Name: Tip + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2164222606230954140 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3857615556319596175} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0, y: 0, z: 0.00771} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5449894261559506427} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &8350726662087383414 GameObject: m_ObjectHideFlags: 0 @@ -419,14 +450,14 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8350726662087383414} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalRotation: {x: 0, y: 0, z: -0.7071068, w: 0.7071068} + m_LocalPosition: {x: -0.154, y: 0.433, z: -0.237} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1134124277600307769} m_Father: {fileID: 9116936080776508834} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90} --- !u!120 &1366289561210151836 LineRenderer: serializedVersion: 2 @@ -698,7 +729,7 @@ PrefabInstance: - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalPosition.y - value: 0 + value: 0.875 objectReference: {fileID: 0} - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} @@ -708,7 +739,7 @@ PrefabInstance: - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalRotation.w - value: 1 + value: 0.7071068 objectReference: {fileID: 0} - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} @@ -718,7 +749,7 @@ PrefabInstance: - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalRotation.y - value: 0 + value: 0.7071068 objectReference: {fileID: 0} - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} @@ -733,7 +764,7 @@ PrefabInstance: - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalEulerAnglesHint.y - value: 0 + value: 90 objectReference: {fileID: 0} - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} @@ -775,6 +806,10 @@ PrefabInstance: type: 3} insertIndex: -1 addedObject: {fileID: 3688593234855359137} + - targetCorrespondingSourceObject: {fileID: 3635969771921000238, guid: f54a14318952c90c5b47a300aedb0d15, + type: 3} + insertIndex: -1 + addedObject: {fileID: 2164222606230954140} m_AddedComponents: - targetCorrespondingSourceObject: {fileID: 872127579833310669, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} @@ -788,13 +823,36 @@ PrefabInstance: type: 3} insertIndex: -1 addedObject: {fileID: 7437064479105606814} + - targetCorrespondingSourceObject: {fileID: 1153177996425766443, guid: f54a14318952c90c5b47a300aedb0d15, + type: 3} + insertIndex: -1 + addedObject: {fileID: 4164347120692690677} m_SourcePrefab: {fileID: 100100000, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} ---- !u!1 &991916436778619820 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 8365322460670124409, guid: f54a14318952c90c5b47a300aedb0d15, +--- !u!4 &5449894261559506427 stripped +Transform: + m_CorrespondingSourceObject: {fileID: 3635969771921000238, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} m_PrefabInstance: {fileID: 8778754593817981653} m_PrefabAsset: {fileID: 0} +--- !u!1 &7625877907635197182 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1153177996425766443, guid: f54a14318952c90c5b47a300aedb0d15, + type: 3} + m_PrefabInstance: {fileID: 8778754593817981653} + m_PrefabAsset: {fileID: 0} +--- !u!114 &4164347120692690677 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7625877907635197182} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7e81b110ace4ce100b765f538ff6522f, type: 3} + m_Name: + m_EditorClassIdentifier: + tip: {fileID: 2164222606230954140} --- !u!1 &8488737342646939416 stripped GameObject: m_CorrespondingSourceObject: {fileID: 872127579833310669, guid: f54a14318952c90c5b47a300aedb0d15, @@ -847,9 +905,9 @@ MonoBehaviour: m_EditorClassIdentifier: horizontalArc: {fileID: 8981486734084153558} verticalArc: {fileID: 5247639431516572416} - attackSecondsDelay: 10 + attackSecondsDelay: 1 projectileSequence: [] - barrel: {fileID: 991916436778619820} + barrel: {fileID: 4164347120692690677} trajectory: {fileID: 3987931586699850031} trajectoryBounces: 4 --- !u!4 &9116936080776508834 stripped diff --git a/Assets/Scenes/TowerTest.unity b/Assets/Scenes/TowerTest.unity index ca52e04..6da6690 100644 --- a/Assets/Scenes/TowerTest.unity +++ b/Assets/Scenes/TowerTest.unity @@ -645,116 +645,26 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 614396578925772021, guid: 9415cb10a1bd579269301ca4f61a1554, + - target: {fileID: 8488737342646939416, guid: 9415cb10a1bd579269301ca4f61a1554, type: 3} propertyPath: m_Name value: Turret objectReference: {fileID: 0} - - target: {fileID: 841175348891104259, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: projectileSequence.Array.data[0].bulletPrefab - value: - objectReference: {fileID: 1006877822} - - target: {fileID: 963397980498552487, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_Materials.Array.data[0] - value: - objectReference: {fileID: 2100000, guid: 9896f9d54cb5db749bd49b9da446a549, type: 2} - - target: {fileID: 4508182228569071021, guid: 9415cb10a1bd579269301ca4f61a1554, + - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, type: 3} propertyPath: m_LocalPosition.x - value: -0.154 - objectReference: {fileID: 0} - - target: {fileID: 4508182228569071021, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalPosition.y - value: 0.433 - objectReference: {fileID: 0} - - target: {fileID: 4508182228569071021, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalPosition.z - value: -0.237 - objectReference: {fileID: 0} - - target: {fileID: 4508182228569071021, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalRotation.w - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4508182228569071021, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalRotation.z - value: -0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4508182228569071021, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: -90 - objectReference: {fileID: 0} - - target: {fileID: 6499929602381336473, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalPosition.x - value: -0.12817177 - objectReference: {fileID: 0} - - target: {fileID: 6499929602381336473, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalPosition.y - value: 0.73 - objectReference: {fileID: 0} - - target: {fileID: 6499929602381336473, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalPosition.z - value: 0.34760666 - objectReference: {fileID: 0} - - target: {fileID: 6499929602381336473, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalRotation.w - value: 0.5129842 - objectReference: {fileID: 0} - - target: {fileID: 6499929602381336473, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalRotation.x - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 6499929602381336473, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalRotation.y - value: 0.858398 - objectReference: {fileID: 0} - - target: {fileID: 6499929602381336473, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalRotation.z - value: -0 - objectReference: {fileID: 0} - - target: {fileID: 6499929602381336473, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6499929602381336473, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalEulerAnglesHint.y - value: 118.274 - objectReference: {fileID: 0} - - target: {fileID: 6499929602381336473, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: m_LocalEulerAnglesHint.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7437064479105606814, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: barrel - value: - objectReference: {fileID: 1890448162} - - target: {fileID: 7437064479105606814, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: attackSecondsDelay - value: 1 - objectReference: {fileID: 0} - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, type: 3} propertyPath: m_LocalPosition.y value: 0.875 objectReference: {fileID: 0} + - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, type: 3} propertyPath: m_LocalRotation.w @@ -775,22 +685,26 @@ PrefabInstance: propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 90 objectReference: {fileID: 0} + - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 9415cb10a1bd579269301ca4f61a1554, type: 3} ---- !u!1 &1006877822 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 2962360034595352958, guid: 32921dff6554af324ba0001ca8b56fee, - type: 3} - m_PrefabInstance: {fileID: 667212637924654954} - m_PrefabAsset: {fileID: 0} --- !u!1 &1085503232 GameObject: m_ObjectHideFlags: 0 @@ -1211,12 +1125,6 @@ Transform: m_Children: [] m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} ---- !u!1 &1890448162 stripped -GameObject: - m_CorrespondingSourceObject: {fileID: 7625877907635197182, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - m_PrefabInstance: {fileID: 891862850} - m_PrefabAsset: {fileID: 0} --- !u!1001 &667212637924654954 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Tower/Barrel.cs b/Assets/Scripts/Tower/Barrel.cs new file mode 100644 index 0000000..72b91c5 --- /dev/null +++ b/Assets/Scripts/Tower/Barrel.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +public class Barrel : MonoBehaviour +{ + [SerializeField] + private Transform tip; + + public Transform Tip => tip; +} diff --git a/Assets/Scripts/Tower/Barrel.cs.meta b/Assets/Scripts/Tower/Barrel.cs.meta new file mode 100644 index 0000000..a2d8372 --- /dev/null +++ b/Assets/Scripts/Tower/Barrel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7e81b110ace4ce100b765f538ff6522f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Tower/ProjectileTower.cs b/Assets/Scripts/Tower/ProjectileTower.cs index 7b3c033..ae89b9d 100644 --- a/Assets/Scripts/Tower/ProjectileTower.cs +++ b/Assets/Scripts/Tower/ProjectileTower.cs @@ -9,7 +9,7 @@ public class ProjectileTower : Tower { [SerializeField, Range(0.01f, 20f)] private float attackSecondsDelay = 1f; [SerializeField] private ProjectilePattern[] projectileSequence; - [SerializeField] private GameObject barrel; + [SerializeField] private Barrel barrel; [SerializeField] private LineRenderer trajectory; [SerializeField] private int trajectoryBounces = 2; private const float k_trajectory_maxdist = 100f; @@ -42,12 +42,13 @@ public class ProjectileTower : Tower { if (trajectory == null) return; - // TODO: change to barrel tip - Vector3 origin = transform.position; - Vector3 dir = AimDirection; + Vector3 origin = barrel.Tip.position; + Vector3 dir = barrel.transform.forward; List pointsInTrajectory = new(); + pointsInTrajectory.Add(origin); for (int i = 0; i < trajectoryBounces; i++) { + Debug.DrawRay(origin, dir.normalized * k_trajectory_maxdist, Color.red, 5f); RaycastHit hit; if (!Physics.Raycast(origin, dir, out hit, k_trajectory_maxdist)) break; From 5d0152f823713a8dc607c3afcd90c10148f90296 Mon Sep 17 00:00:00 2001 From: Sveske Juice Date: Sat, 20 Apr 2024 16:49:40 +0200 Subject: [PATCH 5/7] Support 360 aim --- Assets/Prefabs/Towers/Turret.prefab | 4 ++-- Assets/Scenes/TowerTest.unity | 5 +++++ Assets/Scripts/Utilities/EditableArc.cs | 25 ++++++++++++++++++++++--- 3 files changed, 29 insertions(+), 5 deletions(-) diff --git a/Assets/Prefabs/Towers/Turret.prefab b/Assets/Prefabs/Towers/Turret.prefab index 64543f4..1bdbae0 100644 --- a/Assets/Prefabs/Towers/Turret.prefab +++ b/Assets/Prefabs/Towers/Turret.prefab @@ -149,12 +149,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: orientation: 0 - samples: 15 + samples: 25 visualRadius: 1 knob: {fileID: 8756968480882234867} knobSensitiviy: 1 moveKnobAxisName: Mouse X - rotationMinMax: {x: -30, y: 30} + rotationMinMax: {x: 0, y: 360} --- !u!1 &2485007193584062128 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/TowerTest.unity b/Assets/Scenes/TowerTest.unity index 6da6690..79c6ee0 100644 --- a/Assets/Scenes/TowerTest.unity +++ b/Assets/Scenes/TowerTest.unity @@ -650,6 +650,11 @@ PrefabInstance: propertyPath: m_Name value: Turret objectReference: {fileID: 0} + - target: {fileID: 8981486734084153558, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: rotationMinMax.y + value: 360 + objectReference: {fileID: 0} - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, type: 3} propertyPath: m_LocalPosition.x diff --git a/Assets/Scripts/Utilities/EditableArc.cs b/Assets/Scripts/Utilities/EditableArc.cs index 471ada0..8f7b042 100644 --- a/Assets/Scripts/Utilities/EditableArc.cs +++ b/Assets/Scripts/Utilities/EditableArc.cs @@ -37,7 +37,7 @@ public class EditableArc : MonoBehaviour Value.AddListener(UpdateKnobPosition); // Set default rotation to average between min max - Value.Value = (rotationMinMax.x + rotationMinMax.y) / 2f; + // Value.Value = (rotationMinMax.x + rotationMinMax.y) / 2f; Assert.IsNotNull(knob, $"No knob on {this}"); knob.OnDrag += PointerDraggedOnKnob; @@ -71,7 +71,7 @@ public class EditableArc : MonoBehaviour float sign = -1f; float delta = mouseMovement * knobSensitiviy * sign; - float newAngle = Mathf.Clamp(Value.Value + delta, rotationMinMax.x, rotationMinMax.y); + float newAngle = ClampAngle(Value.Value + delta, rotationMinMax.x, rotationMinMax.y); Value.Value = newAngle; } @@ -100,12 +100,31 @@ public class EditableArc : MonoBehaviour } lineRenderer.SetPositions(positions); + + // Set looop + Debug.Log(angle); + if (angle >= 360) + lineRenderer.loop = true; + else + lineRenderer.loop = false; } public Vector3 SamplePointOnArc(Vector3 startPoint, Vector3 endPoint, float radius, float t) { - float angle = Mathf.LerpAngle(rotationMinMax.x, rotationMinMax.y, t); + float angle = Mathf.Lerp(rotationMinMax.x, rotationMinMax.y, t); Vector3 dir = Quaternion.AngleAxis(angle, normal) * tangent; return transform.position + dir.normalized * radius; } + + public static float ClampAngle(float current, float min, float max) + { + float dtAngle = Mathf.Abs(((min - max) + 180) % 360 - 180); + float hdtAngle = dtAngle * 0.5f; + float midAngle = min + hdtAngle; + + float offset = Mathf.Abs(Mathf.DeltaAngle(current, midAngle)) - hdtAngle; + if (offset > 0) + current = Mathf.MoveTowardsAngle(current, midAngle, offset); + return current; + } } From 48a3bef6414ef3799c15109db214954dedeae14a Mon Sep 17 00:00:00 2001 From: Sveske Juice Date: Sat, 20 Apr 2024 16:51:07 +0200 Subject: [PATCH 6/7] amend --- Assets/Scenes/TowerTest.unity | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Assets/Scenes/TowerTest.unity b/Assets/Scenes/TowerTest.unity index 79c6ee0..0268c1f 100644 --- a/Assets/Scenes/TowerTest.unity +++ b/Assets/Scenes/TowerTest.unity @@ -645,16 +645,21 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 1366289561210151836, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_CastShadows + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7215452495559205732, guid: 9415cb10a1bd579269301ca4f61a1554, + type: 3} + propertyPath: m_CastShadows + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8488737342646939416, guid: 9415cb10a1bd579269301ca4f61a1554, type: 3} propertyPath: m_Name value: Turret objectReference: {fileID: 0} - - target: {fileID: 8981486734084153558, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: rotationMinMax.y - value: 360 - objectReference: {fileID: 0} - target: {fileID: 9116936080776508834, guid: 9415cb10a1bd579269301ca4f61a1554, type: 3} propertyPath: m_LocalPosition.x From 1c8a38b1265f8c872ea52c85e504ed43b55394b3 Mon Sep 17 00:00:00 2001 From: Sveske Juice Date: Sat, 20 Apr 2024 16:52:05 +0200 Subject: [PATCH 7/7] amend --- Assets/Scripts/Utilities/EditableArc.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/Assets/Scripts/Utilities/EditableArc.cs b/Assets/Scripts/Utilities/EditableArc.cs index 8f7b042..efc1478 100644 --- a/Assets/Scripts/Utilities/EditableArc.cs +++ b/Assets/Scripts/Utilities/EditableArc.cs @@ -102,7 +102,6 @@ public class EditableArc : MonoBehaviour lineRenderer.SetPositions(positions); // Set looop - Debug.Log(angle); if (angle >= 360) lineRenderer.loop = true; else