From 165fa076c6602caa85d66e7afd8a3358c88b8763 Mon Sep 17 00:00:00 2001 From: Stedd Date: Sat, 5 Oct 2024 18:54:10 +0200 Subject: [PATCH] Added simple enemy spawner --- Assets/Entities/Enemies/EnemySpawner.prefab | 134 ++++++++++++++++++ .../Entities/Enemies/EnemySpawner.prefab.meta | 7 + Assets/Entities/Scripts/EnemySpawner.cs | 34 +++++ Assets/Entities/Scripts/EnemySpawner.cs.meta | 11 ++ 4 files changed, 186 insertions(+) create mode 100644 Assets/Entities/Enemies/EnemySpawner.prefab create mode 100644 Assets/Entities/Enemies/EnemySpawner.prefab.meta create mode 100644 Assets/Entities/Scripts/EnemySpawner.cs create mode 100644 Assets/Entities/Scripts/EnemySpawner.cs.meta diff --git a/Assets/Entities/Enemies/EnemySpawner.prefab b/Assets/Entities/Enemies/EnemySpawner.prefab new file mode 100644 index 0000000..ccd4534 --- /dev/null +++ b/Assets/Entities/Enemies/EnemySpawner.prefab @@ -0,0 +1,134 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8730251502231021639 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 85093970558183684} + - component: {fileID: 6205822268680980013} + - component: {fileID: 4911635094802042448} + m_Layer: 0 + m_Name: SpawnPoint + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &85093970558183684 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8730251502231021639} + 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: 8204127268198470007} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6205822268680980013 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8730251502231021639} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &4911635094802042448 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8730251502231021639} + 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: 257 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 2ba8e0e4f5aec294cb4320682b1b3296, 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!1 &9160146395234108762 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8204127268198470007} + - component: {fileID: 9047535117425585278} + m_Layer: 0 + m_Name: EnemySpawner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8204127268198470007 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9160146395234108762} + 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: 85093970558183684} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &9047535117425585278 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9160146395234108762} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: add423e8b5a02b039988843304e93496, type: 3} + m_Name: + m_EditorClassIdentifier: + _enemyPrefab: {fileID: 5599539567497807159, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3} + _spawnRate: 5 + _spawnEnemies: 1 + _timeToNextSpawn: 0 diff --git a/Assets/Entities/Enemies/EnemySpawner.prefab.meta b/Assets/Entities/Enemies/EnemySpawner.prefab.meta new file mode 100644 index 0000000..ce375be --- /dev/null +++ b/Assets/Entities/Enemies/EnemySpawner.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 184c749bb378419bfbe29fdbb6ae0743 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Entities/Scripts/EnemySpawner.cs b/Assets/Entities/Scripts/EnemySpawner.cs new file mode 100644 index 0000000..771c00e --- /dev/null +++ b/Assets/Entities/Scripts/EnemySpawner.cs @@ -0,0 +1,34 @@ +using UnityEngine; + +namespace AsteroidGame +{ + public class EnemySpawner : MonoBehaviour + { + [Header("Parameters")] + [SerializeField] private GameObject _enemyPrefab; + [SerializeField] [Range(0.1f, 60f)] private float _spawnRate = 60f; + [SerializeField] private bool _spawnEnemies; + + [Header("State")] + [SerializeField] private float _timeToNextSpawn; + + private void Start() + { + _timeToNextSpawn = 0; + } + + private void Update() + { + if (!_spawnEnemies) return; + + _timeToNextSpawn -= Time.deltaTime; + + if (!(_timeToNextSpawn <= 0)) return; + + var newEnemy = Instantiate(_enemyPrefab, transform); + newEnemy.transform.parent = transform; + + _timeToNextSpawn = _spawnRate; + } + } +} \ No newline at end of file diff --git a/Assets/Entities/Scripts/EnemySpawner.cs.meta b/Assets/Entities/Scripts/EnemySpawner.cs.meta new file mode 100644 index 0000000..f39fe1d --- /dev/null +++ b/Assets/Entities/Scripts/EnemySpawner.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: add423e8b5a02b039988843304e93496 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: