From 0dce94924c74a68f95582e6f498bc5d940c213e7 Mon Sep 17 00:00:00 2001 From: Pasha Bibko <156938226+PashaBibko@users.noreply.github.com> Date: Tue, 18 Nov 2025 15:52:13 +0000 Subject: [PATCH] Added basic enemy Does not attack the player currently --- Assets/Materials/{WhiteMat.mat => RedMat.mat} | 13 +- .../{WhiteMat.mat.meta => RedMat.mat.meta} | 0 Assets/Prefabs/Enemy.prefab | 176 ++++++++++++++++++ Assets/Prefabs/Enemy.prefab.meta | 7 + Assets/Scenes/SampleScene.unity | 1 + Assets/Scripts/EnemyController.cs | 9 + Assets/Scripts/EnemyController.cs.meta | 11 ++ Assets/Scripts/OrbitalPosition.cs | 13 +- Assets/Scripts/PlayerController.cs | 9 +- ProjectSettings/TagManager.asset | 3 +- 10 files changed, 234 insertions(+), 8 deletions(-) rename Assets/Materials/{WhiteMat.mat => RedMat.mat} (87%) rename Assets/Materials/{WhiteMat.mat.meta => RedMat.mat.meta} (100%) create mode 100644 Assets/Prefabs/Enemy.prefab create mode 100644 Assets/Prefabs/Enemy.prefab.meta create mode 100644 Assets/Scripts/EnemyController.cs create mode 100644 Assets/Scripts/EnemyController.cs.meta diff --git a/Assets/Materials/WhiteMat.mat b/Assets/Materials/RedMat.mat similarity index 87% rename from Assets/Materials/WhiteMat.mat rename to Assets/Materials/RedMat.mat index 3de9d65..0a66b50 100644 --- a/Assets/Materials/WhiteMat.mat +++ b/Assets/Materials/RedMat.mat @@ -7,8 +7,8 @@ Material: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: WhiteMat - m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_Name: RedMat + m_Shader: {fileID: 10770, guid: 0000000000000000f000000000000000, type: 0} m_Parent: {fileID: 0} m_ModifiedSerializedProperties: 0 m_ValidKeywords: [] @@ -62,6 +62,7 @@ Material: m_Ints: [] m_Floats: - _BumpScale: 1 + - _ColorMask: 15 - _Cutoff: 0.5 - _DetailNormalMapScale: 1 - _DstBlend: 0 @@ -75,9 +76,15 @@ Material: - _SmoothnessTextureChannel: 0 - _SpecularHighlights: 1 - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 - _UVSec: 0 + - _UseUIAlphaClip: 0 - _ZWrite: 1 m_Colors: - - _Color: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 0, b: 0, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Materials/WhiteMat.mat.meta b/Assets/Materials/RedMat.mat.meta similarity index 100% rename from Assets/Materials/WhiteMat.mat.meta rename to Assets/Materials/RedMat.mat.meta diff --git a/Assets/Prefabs/Enemy.prefab b/Assets/Prefabs/Enemy.prefab new file mode 100644 index 0000000..0d5a9f5 --- /dev/null +++ b/Assets/Prefabs/Enemy.prefab @@ -0,0 +1,176 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &345795220292517504 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8341506432217282029} + - component: {fileID: 3813189644929098082} + m_Layer: 0 + m_Name: Enemy + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8341506432217282029 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 345795220292517504} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} + m_ConstrainProportionsScale: 1 + m_Children: + - {fileID: 1739635715747709762} + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3813189644929098082 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 345795220292517504} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a4502a12b7f15246aa7b9cc2d30a862, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &4804673878835712602 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1739635715747709762} + - component: {fileID: 5026174633141696716} + - component: {fileID: 8577569336777110376} + - component: {fileID: 4859736940813683666} + m_Layer: 0 + m_Name: Model + m_TagString: Enemy + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1739635715747709762 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4804673878835712602} + 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: 8341506432217282029} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!23 &5026174633141696716 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4804673878835712602} + 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: a7292488fc42280428b7d5183069b410, 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 &8577569336777110376 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4804673878835712602} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!61 &4859736940813683666 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4804673878835712602} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 diff --git a/Assets/Prefabs/Enemy.prefab.meta b/Assets/Prefabs/Enemy.prefab.meta new file mode 100644 index 0000000..1c7c06c --- /dev/null +++ b/Assets/Prefabs/Enemy.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ec4a924a38b208240b281bd7983b07b7 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 4d3d1f6..3be90ae 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -153,6 +153,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 2895addc317815345b19503bab859a6a, type: 3} m_Name: m_EditorClassIdentifier: + m_EnemyPrefab: {fileID: 345795220292517504, guid: ec4a924a38b208240b281bd7983b07b7, type: 3} --- !u!4 &104400498 Transform: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/EnemyController.cs b/Assets/Scripts/EnemyController.cs new file mode 100644 index 0000000..d64149e --- /dev/null +++ b/Assets/Scripts/EnemyController.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +public class EnemyController : OrbitalPositionBehaviour +{ + public override void OnStart() + { + m_OrbitalPosition.m_DeletedAtCentre = true; + } +} diff --git a/Assets/Scripts/EnemyController.cs.meta b/Assets/Scripts/EnemyController.cs.meta new file mode 100644 index 0000000..39f6308 --- /dev/null +++ b/Assets/Scripts/EnemyController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8a4502a12b7f15246aa7b9cc2d30a862 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/OrbitalPosition.cs b/Assets/Scripts/OrbitalPosition.cs index b78e136..dd573ba 100644 --- a/Assets/Scripts/OrbitalPosition.cs +++ b/Assets/Scripts/OrbitalPosition.cs @@ -10,6 +10,9 @@ public class OrbitalPosition public Transform owner = null; + public int m_SpinSpeed = 1; + public bool m_DeletedAtCentre = false; + public OrbitalPosition(GameObject _owner) { pRing = GlobalOrbitalPositionManager.LastRingID; @@ -126,7 +129,15 @@ public class GlobalOrbitalPositionManager : MonoBehaviour foreach (OrbitalPosition orbitalPosition in m_ObjectInstances) { if (!m_Distances.ContainsKey(orbitalPosition.pRing)) + { + if (orbitalPosition.m_DeletedAtCentre) + { + Destroy(orbitalPosition.owner.gameObject); + continue; + } + orbitalPosition.pRing = m_LastGeneratedRing; + } float distance = m_Distances[orbitalPosition.pRing]; orbitalPosition.DistanceFromCentre = distance; @@ -158,5 +169,5 @@ public abstract class OrbitalPositionBehaviour : MonoBehaviour private void OnDestroy() => GlobalOrbitalPositionManager.UnregisterOrbitalPositionInstance(m_OrbitalPosition); - public abstract void OnStart(); + public virtual void OnStart() { } } diff --git a/Assets/Scripts/PlayerController.cs b/Assets/Scripts/PlayerController.cs index 1ef3608..00cfd27 100644 --- a/Assets/Scripts/PlayerController.cs +++ b/Assets/Scripts/PlayerController.cs @@ -1,11 +1,9 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEditor; using UnityEngine; public class PlayerController : OrbitalPositionBehaviour { float m_StartPosition; + public GameObject m_EnemyPrefab; public override void OnStart() { @@ -18,5 +16,10 @@ public class PlayerController : OrbitalPositionBehaviour { m_OrbitalPosition.pRing += 1; } + + if (Input.GetKey(KeyCode.E)) + { + Instantiate(m_EnemyPrefab); + } } } diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 1c92a78..a561668 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -3,7 +3,8 @@ --- !u!78 &1 TagManager: serializedVersion: 2 - tags: [] + tags: + - Enemy layers: - Default - TransparentFX