Added some scripts from a different project
Enemies and Towers
This commit is contained in:
parent
d1a8cd2240
commit
76ff048395
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7d75a7419127a5f43b0fad3e047043a1
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a9c251869bcfc634d9651084054ffd82
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,18 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class Enemy : MonoBehaviour
|
||||||
|
{
|
||||||
|
// Start is called before the first frame update
|
||||||
|
void Start()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: a8e2a3a5a069cea4cbe59c093201d8dc
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,251 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &3984945248064815929
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 5330979831303032834}
|
||||||
|
- component: {fileID: 7002075653054196040}
|
||||||
|
- component: {fileID: 5767392122669354460}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: default
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &5330979831303032834
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3984945248064815929}
|
||||||
|
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: -0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 4722945444804288858}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!33 &7002075653054196040
|
||||||
|
MeshFilter:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3984945248064815929}
|
||||||
|
m_Mesh: {fileID: -2432090755550338912, guid: 0eaf0955d0035664c87a3d4177a41887, type: 3}
|
||||||
|
--- !u!23 &5767392122669354460
|
||||||
|
MeshRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3984945248064815929}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_CastShadows: 1
|
||||||
|
m_ReceiveShadows: 1
|
||||||
|
m_DynamicOccludee: 1
|
||||||
|
m_MotionVectors: 1
|
||||||
|
m_LightProbeUsage: 1
|
||||||
|
m_ReflectionProbeUsage: 1
|
||||||
|
m_RayTracingMode: 2
|
||||||
|
m_RayTraceProcedural: 0
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_RendererPriority: 0
|
||||||
|
m_Materials:
|
||||||
|
- {fileID: 6842584044724275946, guid: 0eaf0955d0035664c87a3d4177a41887, type: 3}
|
||||||
|
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 &5386469493770533856
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 4722945444804288858}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Ram
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &4722945444804288858
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5386469493770533856}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 6.25, y: 6.25, z: 6.25}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 5330979831303032834}
|
||||||
|
m_Father: {fileID: 2692714622321691895}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!1 &5599539567497807159
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 2692714622321691895}
|
||||||
|
- component: {fileID: 8306990489970303076}
|
||||||
|
- component: {fileID: -1839871183979442494}
|
||||||
|
- component: {fileID: 6819292882879353878}
|
||||||
|
- component: {fileID: 6251302194646931819}
|
||||||
|
- component: {fileID: 3339486200269071965}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Enemy
|
||||||
|
m_TagString: Enemy
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 0
|
||||||
|
--- !u!4 &2692714622321691895
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5599539567497807159}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 10}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 4722945444804288858}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!65 &8306990489970303076
|
||||||
|
BoxCollider:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5599539567497807159}
|
||||||
|
m_Material: {fileID: 0}
|
||||||
|
m_IsTrigger: 0
|
||||||
|
m_Enabled: 1
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Size: {x: 5, y: 4.3, z: 5}
|
||||||
|
m_Center: {x: 0, y: 2.2, z: 0}
|
||||||
|
--- !u!54 &-1839871183979442494
|
||||||
|
Rigidbody:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5599539567497807159}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Mass: 1
|
||||||
|
m_Drag: 0
|
||||||
|
m_AngularDrag: 0.05
|
||||||
|
m_UseGravity: 0
|
||||||
|
m_IsKinematic: 0
|
||||||
|
m_Interpolate: 0
|
||||||
|
m_Constraints: 126
|
||||||
|
m_CollisionDetection: 0
|
||||||
|
--- !u!114 &6819292882879353878
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5599539567497807159}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 8e691044df4c75f4cb07af0551efa2c6, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
speed: 0.4
|
||||||
|
damage: 2
|
||||||
|
enemyHandler: {fileID: 0}
|
||||||
|
scoreHandler: {fileID: 0}
|
||||||
|
path:
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
- {fileID: 0}
|
||||||
|
--- !u!114 &6251302194646931819
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5599539567497807159}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: ac0f42db9d6c21540a5ef3107e36946a, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
enemyHandler: {fileID: 0}
|
||||||
|
scoreHandler: {fileID: 0}
|
||||||
|
maxHealth: 10
|
||||||
|
wealthValue: 5
|
||||||
|
currentHealth: 0
|
||||||
|
--- !u!114 &3339486200269071965
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5599539567497807159}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: a8e2a3a5a069cea4cbe59c093201d8dc, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4af571b983b23f94f8d5ca4dbda27de5
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,87 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1001 &3276725320138281655
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
m_TransformParent: {fileID: 0}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_RootOrder
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4722945444804288858, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalScale.x
|
||||||
|
value: 6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4722945444804288858, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalScale.y
|
||||||
|
value: 6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4722945444804288858, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalScale.z
|
||||||
|
value: 6
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5599539567497807159, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: EnemyFast
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6251302194646931819, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: maxHealth
|
||||||
|
value: 5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6251302194646931819, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: wealthValue
|
||||||
|
value: 10
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: speed
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: damage
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0918a47a96be6ad4e853d83c60acda6d
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,133 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class EnemyHandler : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Header("Assigned on start")]
|
||||||
|
[SerializeField] PathFinder pathFinder;
|
||||||
|
[SerializeField] GridManager gridManager;
|
||||||
|
|
||||||
|
|
||||||
|
[Header("Parameters")]
|
||||||
|
[SerializeField] [Range(0.1f, 60f)] float spawnRate = 60f;
|
||||||
|
[SerializeField] int objectPoolSize = 15;
|
||||||
|
|
||||||
|
[Header("Prefabs")]
|
||||||
|
[SerializeField] GameObject objectPool;
|
||||||
|
[SerializeField] List<GameObject> enemyPrefabs = new List<GameObject>();
|
||||||
|
|
||||||
|
[Header("Lists")]
|
||||||
|
[SerializeField] List<Node> path = new List<Node>();
|
||||||
|
[SerializeField] List<GameObject> enemyPools = new List<GameObject>();
|
||||||
|
[SerializeField] List<GameObject> allEnemies = new List<GameObject>();
|
||||||
|
|
||||||
|
|
||||||
|
public List<Node> Path { get { return path; } }
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
gridManager = FindObjectOfType<GridManager>();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
//gridManager.CalculateNewPath();
|
||||||
|
|
||||||
|
PopulateObjectPools();
|
||||||
|
|
||||||
|
StartCoroutine(Spawner());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Update()
|
||||||
|
{
|
||||||
|
if (Input.GetKeyDown(KeyCode.N))
|
||||||
|
{
|
||||||
|
SpawnNewEnemy();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SetPath(List<Node> _nodes)
|
||||||
|
{
|
||||||
|
path.Clear();
|
||||||
|
|
||||||
|
foreach (Node _node in _nodes)
|
||||||
|
{
|
||||||
|
path.Add(_node);
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdateEnemyPath();
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateEnemyPath()
|
||||||
|
{
|
||||||
|
foreach (GameObject _pool in enemyPools)
|
||||||
|
{
|
||||||
|
foreach (EnemyMovement _enemy in _pool.GetComponentsInChildren<EnemyMovement>())
|
||||||
|
{
|
||||||
|
_enemy.SetPath(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PopulateObjectPools()
|
||||||
|
{
|
||||||
|
foreach (GameObject enemy in enemyPrefabs)
|
||||||
|
{
|
||||||
|
GameObject newPool = Instantiate(objectPool, transform);
|
||||||
|
newPool.transform.name = $"ObjectPool:{enemy.name}";
|
||||||
|
ObjectPool poolScript = newPool.GetComponent<ObjectPool>();
|
||||||
|
enemyPools.Add(newPool);
|
||||||
|
|
||||||
|
for (int i = 0; i < objectPoolSize; i++)
|
||||||
|
{
|
||||||
|
enemy.SetActive(false);
|
||||||
|
poolScript.AddObject(enemy);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddEnemyToAllEnemies(GameObject _enemy)
|
||||||
|
{
|
||||||
|
allEnemies.Add(_enemy);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveEnemy(GameObject _enemy)
|
||||||
|
{
|
||||||
|
allEnemies.Remove(_enemy);
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<GameObject> ReturnAllEnemies()
|
||||||
|
{
|
||||||
|
return allEnemies;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SpawnNewEnemy()
|
||||||
|
{
|
||||||
|
int spawnEnemyIndex = Mathf.RoundToInt(Random.Range(-0.49f, 2.49f));
|
||||||
|
enemyPools[spawnEnemyIndex].GetComponent<ObjectPool>().EnableFirstAvailableObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator Spawner()
|
||||||
|
{
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
SpawnNewEnemy();
|
||||||
|
yield return new WaitForSeconds(spawnRate);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector2Int GetCoordinatesFromPosition(Vector3 position)
|
||||||
|
{
|
||||||
|
Vector2Int coordinates = new Vector2Int();
|
||||||
|
coordinates.x = Mathf.RoundToInt(position.x / UnityEditor.EditorSnapSettings.move.x);
|
||||||
|
coordinates.y = Mathf.RoundToInt(position.z / UnityEditor.EditorSnapSettings.move.z);
|
||||||
|
|
||||||
|
return coordinates;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void NotifyEnemiesOfNewPath()
|
||||||
|
{
|
||||||
|
BroadcastMessage("RecalculatePath", SendMessageOptions.DontRequireReceiver);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 62a3dc5f11a44cb4d9faccb4fda8599f
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,56 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &3532497916441651499
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6522036412611271300}
|
||||||
|
- component: {fileID: 5740012543617437938}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: EnemyHandler
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &6522036412611271300
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3532497916441651499}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &5740012543617437938
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3532497916441651499}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 62a3dc5f11a44cb4d9faccb4fda8599f, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
gridManager: {fileID: 0}
|
||||||
|
spawnRate: 1
|
||||||
|
objectPoolSize: 20
|
||||||
|
objectPool: {fileID: 5933799035485059591, guid: f788405216a67b14ead70299a821f731, type: 3}
|
||||||
|
enemyPrefabs:
|
||||||
|
- {fileID: 5599539567497807159, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
- {fileID: 1460346957670431539, guid: d00403ece6c81e3409adb225c74eb396, type: 3}
|
||||||
|
- {fileID: 6975173952531158912, guid: 0918a47a96be6ad4e853d83c60acda6d, type: 3}
|
||||||
|
path: []
|
||||||
|
enemyPools: []
|
||||||
|
allEnemies: []
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7ef7610a148db694982d168933de0f4b
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,62 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class EnemyHealth : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Header("Assigned on start")]
|
||||||
|
[SerializeField] EnemyHandler enemyHandler;
|
||||||
|
[SerializeField] ScoreHandler scoreHandler;
|
||||||
|
|
||||||
|
[Header("Parameters")]
|
||||||
|
[SerializeField] int maxHealth = 5;
|
||||||
|
[SerializeField] int difficultyRamp = 1;
|
||||||
|
|
||||||
|
[SerializeField] int wealthValue = 5;
|
||||||
|
|
||||||
|
[Header("Stats")]
|
||||||
|
[SerializeField] int currentHealth;
|
||||||
|
|
||||||
|
#region Public
|
||||||
|
public int Health { get=> currentHealth;}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
void OnEnable()
|
||||||
|
{
|
||||||
|
enemyHandler = FindObjectOfType<EnemyHandler>();
|
||||||
|
scoreHandler = FindObjectOfType<ScoreHandler>();
|
||||||
|
currentHealth = maxHealth;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnParticleCollision(GameObject damager)
|
||||||
|
{
|
||||||
|
ProcessHitFrom(damager);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProcessHitFrom(GameObject damager)
|
||||||
|
{
|
||||||
|
// SpawnFX(damageVFX);
|
||||||
|
|
||||||
|
// Debug.Log(damager.GetComponentInParent<Tower>().GetDamage());
|
||||||
|
currentHealth -= damager.GetComponentInParent<Tower>().Damage;
|
||||||
|
|
||||||
|
//UpdateHealthText(health);
|
||||||
|
|
||||||
|
if(currentHealth <= 0)
|
||||||
|
{
|
||||||
|
ProcessDeathFrom(damager);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ProcessDeathFrom(GameObject damager)
|
||||||
|
{
|
||||||
|
damager.GetComponentInParent<Tower>().UpdateScore(1f);
|
||||||
|
|
||||||
|
// SpawnFX(deathFX);
|
||||||
|
scoreHandler.ModifyWealth(wealthValue);
|
||||||
|
enemyHandler.RemoveEnemy(gameObject);
|
||||||
|
// Destroy(gameObject);
|
||||||
|
gameObject.SetActive(false);
|
||||||
|
maxHealth += difficultyRamp;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ac0f42db9d6c21540a5ef3107e36946a
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,112 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class EnemyMovement : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Header("Parameters")]
|
||||||
|
[SerializeField] [Range(0f, 5f)] float speed = 1f;
|
||||||
|
[SerializeField] int damage = 1;
|
||||||
|
|
||||||
|
|
||||||
|
[SerializeField] EnemyHandler enemyHandler;
|
||||||
|
[SerializeField] ScoreHandler scoreHandler;
|
||||||
|
[SerializeField] PathFinder pathFinder;
|
||||||
|
[SerializeField] List<Node> path;
|
||||||
|
|
||||||
|
Vector3 startPosition;
|
||||||
|
Vector3 endPosition;
|
||||||
|
float travelPercent = 0f;
|
||||||
|
|
||||||
|
private IEnumerator followPath;
|
||||||
|
|
||||||
|
void Awake()
|
||||||
|
{
|
||||||
|
enemyHandler = FindObjectOfType<EnemyHandler>();
|
||||||
|
scoreHandler = FindObjectOfType<ScoreHandler>();
|
||||||
|
pathFinder = FindObjectOfType<PathFinder>();
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnEnable()
|
||||||
|
{
|
||||||
|
transform.localPosition = GetVector3(pathFinder.GetStartPosition());
|
||||||
|
SetPath(pathFinder.CalculateNewPath(enemyHandler.GetCoordinatesFromPosition(gameObject.transform.position)));
|
||||||
|
transform.LookAt(GetVector3(path[1].coordinates));
|
||||||
|
enemyHandler.AddEnemyToAllEnemies(gameObject);
|
||||||
|
|
||||||
|
CoroutineStarter();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void RecalculatePath()
|
||||||
|
{
|
||||||
|
if (followPath != null)
|
||||||
|
{
|
||||||
|
//Debug.Log("Stopping Coroutine");
|
||||||
|
StopCoroutine(followPath);
|
||||||
|
|
||||||
|
}
|
||||||
|
//Debug.Log($"{this.name} Recalculating path");
|
||||||
|
SetPath(pathFinder.CalculateNewPath(enemyHandler.GetCoordinatesFromPosition(gameObject.transform.position)));
|
||||||
|
CoroutineStarter();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CoroutineStarter()
|
||||||
|
{
|
||||||
|
followPath = FollowPath();
|
||||||
|
StartCoroutine(followPath);
|
||||||
|
}
|
||||||
|
public void SetPath(List<Node> _path)
|
||||||
|
{
|
||||||
|
path.Clear();
|
||||||
|
|
||||||
|
foreach (Node _node in _path)
|
||||||
|
{
|
||||||
|
path.Add(_node);
|
||||||
|
}
|
||||||
|
//regenerate start to finish path to not interfere with building
|
||||||
|
pathFinder.CalculateNewPath();
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator FollowPath()
|
||||||
|
{
|
||||||
|
|
||||||
|
for (int i = 1; i < path.Count; i++)
|
||||||
|
{
|
||||||
|
startPosition = transform.position;
|
||||||
|
endPosition = GetVector3(path[i].coordinates);
|
||||||
|
travelPercent = 0;
|
||||||
|
transform.LookAt(endPosition);
|
||||||
|
//float distance = Vector3.Distance(startPosition, endPosition);
|
||||||
|
//if (Vector3.Distance(startPosition, endPosition) < 10)
|
||||||
|
//{
|
||||||
|
// travelPercent = 1 - (distance / 10);
|
||||||
|
//}
|
||||||
|
|
||||||
|
// Debug.Log($"start: {startPosition}. end: {endPosition}");
|
||||||
|
while (travelPercent < 1f)
|
||||||
|
{
|
||||||
|
travelPercent += Time.deltaTime * speed;
|
||||||
|
transform.position = Vector3.Lerp(startPosition, endPosition, travelPercent);
|
||||||
|
yield return new WaitForEndOfFrame();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
HandleReachedEndOfPath();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HandleReachedEndOfPath()
|
||||||
|
{
|
||||||
|
scoreHandler.ModifyHealth(-damage);
|
||||||
|
scoreHandler.ModifyWealth(-100);
|
||||||
|
enemyHandler.RemoveEnemy(gameObject);
|
||||||
|
//Destroy(gameObject);
|
||||||
|
gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Vector3 GetVector3(Vector2Int _coord)
|
||||||
|
{
|
||||||
|
return new Vector3((float)_coord.x, 0f, (float)_coord.y) * 10f;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8e691044df4c75f4cb07af0551efa2c6
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,239 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &803458978269333711
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 248754501706230461}
|
||||||
|
- component: {fileID: 3028083790515686286}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Halo
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &248754501706230461
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 803458978269333711}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 2.15, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 8984628398547219187}
|
||||||
|
m_RootOrder: 1
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!122 &3028083790515686286
|
||||||
|
Halo:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 803458978269333711}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_Color:
|
||||||
|
serializedVersion: 2
|
||||||
|
rgba: 3573448
|
||||||
|
m_Size: 3.63
|
||||||
|
--- !u!1001 &6481170536800402948
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
m_TransformParent: {fileID: 0}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_RootOrder
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4722945444804288858, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalScale.x
|
||||||
|
value: 6.7
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4722945444804288858, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalScale.y
|
||||||
|
value: 6.7
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4722945444804288858, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_LocalScale.z
|
||||||
|
value: 6.7
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5599539567497807159, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: EnemyStrong
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6251302194646931819, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: maxHealth
|
||||||
|
value: 15
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6251302194646931819, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: wealthValue
|
||||||
|
value: 15
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: speed
|
||||||
|
value: 0.2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: damage
|
||||||
|
value: 3
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[0]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[1]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[2]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[3]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[4]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[5]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[6]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[7]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[8]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[9]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[10]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[11]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[12]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[13]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[14]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[15]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[16]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[17]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[18]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[19]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[20]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[21]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[22]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[23]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[24]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 6819292882879353878, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
propertyPath: path.Array.data[25]
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
--- !u!4 &8984628398547219187 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 2692714622321691895, guid: 4af571b983b23f94f8d5ca4dbda27de5, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 6481170536800402948}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d00403ece6c81e3409adb225c74eb396
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,33 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class ObjectPool : MonoBehaviour
|
||||||
|
{
|
||||||
|
[SerializeField] List<GameObject> objects;
|
||||||
|
|
||||||
|
public void AddObject(GameObject _object){
|
||||||
|
//objects.Add(_object);
|
||||||
|
_object.SetActive(false);
|
||||||
|
GameObject newObject = Instantiate(_object, transform);
|
||||||
|
objects.Add(newObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RemoveObject(GameObject _object){
|
||||||
|
//objects.Remove(_object);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void EnableFirstAvailableObject(){
|
||||||
|
// gameObject.GetComponentsInChildren<GameObject>();
|
||||||
|
foreach (GameObject _object in objects)
|
||||||
|
{
|
||||||
|
if(!_object.activeSelf)
|
||||||
|
{
|
||||||
|
_object.SetActive(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Debug.Log($"Tried activating enemy but no free object in pool:{gameObject.name}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b81db1c4747c5b5428da1245d5154a2b
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,45 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &5933799035485059591
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 8076414275049475842}
|
||||||
|
- component: {fileID: -6231193182959693008}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: ObjectPool
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &8076414275049475842
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5933799035485059591}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &-6231193182959693008
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 5933799035485059591}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: b81db1c4747c5b5428da1245d5154a2b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f788405216a67b14ead70299a821f731
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,101 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0eaf0955d0035664c87a3d4177a41887
|
||||||
|
ModelImporter:
|
||||||
|
serializedVersion: 20101
|
||||||
|
internalIDToNameTable: []
|
||||||
|
externalObjects: {}
|
||||||
|
materials:
|
||||||
|
materialImportMode: 1
|
||||||
|
materialName: 0
|
||||||
|
materialSearch: 1
|
||||||
|
materialLocation: 1
|
||||||
|
animations:
|
||||||
|
legacyGenerateAnimations: 4
|
||||||
|
bakeSimulation: 0
|
||||||
|
resampleCurves: 1
|
||||||
|
optimizeGameObjects: 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: 1
|
||||||
|
meshCompression: 0
|
||||||
|
addColliders: 0
|
||||||
|
useSRGBMaterialColor: 1
|
||||||
|
sortHierarchyByName: 1
|
||||||
|
importVisibility: 1
|
||||||
|
importBlendShapes: 1
|
||||||
|
importCameras: 1
|
||||||
|
importLights: 1
|
||||||
|
fileIdsGeneration: 2
|
||||||
|
swapUVChannels: 0
|
||||||
|
generateSecondaryUV: 0
|
||||||
|
useFileUnits: 1
|
||||||
|
keepQuads: 0
|
||||||
|
weldVertices: 1
|
||||||
|
bakeAxisConversion: 0
|
||||||
|
preserveHierarchy: 0
|
||||||
|
skinWeightsMode: 0
|
||||||
|
maxBonesPerVertex: 4
|
||||||
|
minBoneWeight: 0.001
|
||||||
|
meshOptimizationFlags: -1
|
||||||
|
indexFormat: 0
|
||||||
|
secondaryUVAngleDistortion: 8
|
||||||
|
secondaryUVAreaDistortion: 15.000001
|
||||||
|
secondaryUVHardAngle: 88
|
||||||
|
secondaryUVMarginMethod: 1
|
||||||
|
secondaryUVMinLightmapResolution: 40
|
||||||
|
secondaryUVMinObjectScale: 1
|
||||||
|
secondaryUVPackMargin: 4
|
||||||
|
useFileScale: 1
|
||||||
|
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: 1
|
||||||
|
rootMotionBoneName:
|
||||||
|
hasTranslationDoF: 0
|
||||||
|
hasExtraRoot: 0
|
||||||
|
skeletonHasParents: 1
|
||||||
|
lastHumanDescriptionAvatarSource: {instanceID: 0}
|
||||||
|
autoGenerateAvatarMappingIfUnspecified: 1
|
||||||
|
animationType: 2
|
||||||
|
humanoidOversampling: 1
|
||||||
|
avatarSetup: 0
|
||||||
|
additionalBone: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 494a63d314412154f9c9c967cd14c05e
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,72 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class BuildingHandler : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Header("Assigned on start")]
|
||||||
|
[SerializeField] ScoreHandler scoreHandler;
|
||||||
|
[SerializeField] GridManager gridManager;
|
||||||
|
|
||||||
|
[Header("Assigned on start")]
|
||||||
|
[SerializeField] int buildingSelector = 0;
|
||||||
|
|
||||||
|
[Header("Prefabs")]
|
||||||
|
[SerializeField] List<Tower> buildings = new List<Tower>();
|
||||||
|
// Start is called before the first frame update
|
||||||
|
void Start()
|
||||||
|
{
|
||||||
|
scoreHandler = FindObjectOfType<ScoreHandler>();
|
||||||
|
gridManager = FindObjectOfType<GridManager>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void BuildTower(GameObject _tileGO)
|
||||||
|
{
|
||||||
|
//Tile _tile = _tileGO.GetComponentInChildren<Tile>();
|
||||||
|
Node _node = gridManager.GetNode(GetVector2(_tileGO));
|
||||||
|
|
||||||
|
//Debug.Log($"Placing tower on Tile: {_tileGO.transform.position}");
|
||||||
|
//Debug.Log($"Placing tower on Node: {_node.coordinates}");
|
||||||
|
|
||||||
|
if (_node.isBuildable)
|
||||||
|
{
|
||||||
|
if (scoreHandler.CurrentBalance - buildings[buildingSelector].Cost < 0)
|
||||||
|
{
|
||||||
|
print("Insufficient Funds!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (_node.isPath)
|
||||||
|
{
|
||||||
|
_node.isBuildable = false;
|
||||||
|
_node.isWalkable = false;
|
||||||
|
gridManager.SetNode(_node);
|
||||||
|
//gridManager.CalculateNewPath();
|
||||||
|
|
||||||
|
if (!gridManager.CheckForValidPath())
|
||||||
|
{
|
||||||
|
_node.isBuildable = true;
|
||||||
|
_node.isWalkable = true;
|
||||||
|
gridManager.SetNode(_node);
|
||||||
|
print("Not allowed to block path!");
|
||||||
|
gridManager.CalculateNewPath();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scoreHandler.ModifyWealth(-buildings[buildingSelector].Cost);
|
||||||
|
Instantiate(buildings[buildingSelector], _tileGO.transform.position, Quaternion.identity, transform);
|
||||||
|
|
||||||
|
_node.isWalkable = false;
|
||||||
|
_node.isBuildable = false;
|
||||||
|
|
||||||
|
gridManager.SetNode(_node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector2Int GetVector2(GameObject _o)
|
||||||
|
{
|
||||||
|
return new Vector2Int((Mathf.RoundToInt(_o.transform.position.x) / 10), (Mathf.RoundToInt(_o.transform.position.z / 10)));
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 51bf353b43f7b2448bbb3088d78ee8a6
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,49 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &8724214045091603641
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6508452906343485956}
|
||||||
|
- component: {fileID: 3682645643528836357}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: BuildingHandler
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &6508452906343485956
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8724214045091603641}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 46.822308, y: -168.60272, z: 143.78717}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &3682645643528836357
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 8724214045091603641}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 51bf353b43f7b2448bbb3088d78ee8a6, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
scoreHandler: {fileID: 0}
|
||||||
|
buildings:
|
||||||
|
- {fileID: 5722631354108134187, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
- {fileID: 6261550781972269396, guid: dcf90521dd3b06548b2a43a02a5f6dc3, type: 3}
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cbeeac603faf0334b8a47a73094ea1c1
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,63 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.SceneManagement;
|
||||||
|
using TMPro;
|
||||||
|
|
||||||
|
public class ScoreHandler : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Header("UI")]
|
||||||
|
[SerializeField] TextMeshProUGUI dispayBalance;
|
||||||
|
|
||||||
|
[Header("Parameters")]
|
||||||
|
[SerializeField] int startHealth = 5;
|
||||||
|
[SerializeField] int startBalance = 100;
|
||||||
|
[Header("Stats")]
|
||||||
|
[SerializeField] int currentHealth;
|
||||||
|
[SerializeField] int currentBalance;
|
||||||
|
public int CurrentBalance {get {return currentBalance;}}
|
||||||
|
|
||||||
|
void Start()
|
||||||
|
{
|
||||||
|
currentHealth = startHealth;
|
||||||
|
currentBalance = startBalance;
|
||||||
|
UpdateGUI();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ModifyHealth(GameObject enemy)
|
||||||
|
{
|
||||||
|
currentHealth -= 1;
|
||||||
|
CheckIfYouLost();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ModifyHealth(int _amount)
|
||||||
|
{
|
||||||
|
currentHealth += _amount;
|
||||||
|
CheckIfYouLost();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheckIfYouLost(){
|
||||||
|
if(currentHealth <= 0)
|
||||||
|
{
|
||||||
|
Debug.Log("You lost");
|
||||||
|
Reload();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ModifyWealth(int _amount){
|
||||||
|
currentBalance += _amount;
|
||||||
|
UpdateGUI();
|
||||||
|
// Debug.Log($"Wealth modification. Change:{_amount}. Current: {wealthAmount}");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Reload()
|
||||||
|
{
|
||||||
|
int currentSceneIndex = SceneManager.GetActiveScene().buildIndex;
|
||||||
|
SceneManager.LoadScene(currentSceneIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
void UpdateGUI(){
|
||||||
|
dispayBalance.text = $"Gold: {currentBalance.ToString()}";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e259bfb920b121d44ae03fc7b84db313
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,50 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &2788695991853430528
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6754556620218872347}
|
||||||
|
- component: {fileID: -685309727599945802}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: ScoreHandler
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &6754556620218872347
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2788695991853430528}
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &-685309727599945802
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2788695991853430528}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: e259bfb920b121d44ae03fc7b84db313, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
dispayBalance: {fileID: 0}
|
||||||
|
startHealth: 10
|
||||||
|
startBalance: 150
|
||||||
|
currentHealth: 0
|
||||||
|
currentBalance: 0
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 503eaabbe2676fc4d880be57dca9d2ac
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 11d5a0dd335d9e44ca54863cc74baa28
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8a965e088bae16643aab3d07ccfd5e2e
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,87 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1001 &1841868512401164927
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
m_TransformParent: {fileID: 0}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 3049131714819384361, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: m_RootOrder
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3049131714819384361, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3049131714819384361, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3049131714819384361, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3049131714819384361, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3049131714819384361, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3049131714819384361, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3049131714819384361, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3049131714819384361, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3049131714819384361, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3049131714819384361, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3219458064393657486, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: Ballista_Sniper
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5722631354108134187, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: cost
|
||||||
|
value: 60
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5722631354108134187, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: damage
|
||||||
|
value: 4
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5722631354108134187, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: fireRate
|
||||||
|
value: 0.25
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5722631354108134187, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: buildTimer
|
||||||
|
value: 5
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5722631354108134187, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: maxDistance
|
||||||
|
value: 80
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5722631354108134187, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: weaponRange
|
||||||
|
value: 80
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 5722631354108134187, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
||||||
|
propertyPath: projectileSpeed
|
||||||
|
value: 20
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 8a965e088bae16643aab3d07ccfd5e2e, type: 3}
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dcf90521dd3b06548b2a43a02a5f6dc3
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,114 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &2603020248621955050
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 6533006041106130129}
|
||||||
|
- component: {fileID: 8250252834721668507}
|
||||||
|
- component: {fileID: 4853599590841956623}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: BoltMesh
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &6533006041106130129
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2603020248621955050}
|
||||||
|
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: -0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 6.25, y: 6.25, z: 6.25}
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 5970034036004984201}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!33 &8250252834721668507
|
||||||
|
MeshFilter:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2603020248621955050}
|
||||||
|
m_Mesh: {fileID: -2432090755550338912, guid: 77a5e84b782c81648b95ce756f4622a0, type: 3}
|
||||||
|
--- !u!23 &4853599590841956623
|
||||||
|
MeshRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 2603020248621955050}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_CastShadows: 1
|
||||||
|
m_ReceiveShadows: 1
|
||||||
|
m_DynamicOccludee: 1
|
||||||
|
m_MotionVectors: 1
|
||||||
|
m_LightProbeUsage: 1
|
||||||
|
m_ReflectionProbeUsage: 1
|
||||||
|
m_RayTracingMode: 2
|
||||||
|
m_RayTraceProcedural: 0
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_RendererPriority: 0
|
||||||
|
m_Materials:
|
||||||
|
- {fileID: -8469494145858465668, guid: af50c4e21f0e9b9419ff00e3c39e7711, type: 3}
|
||||||
|
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 &6454224513027657523
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 5970034036004984201}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: Bolt
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &5970034036004984201
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 6454224513027657523}
|
||||||
|
m_LocalRotation: {x: 0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: -0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 6533006041106130129}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_RootOrder: 0
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7362a7dc6d14d7748953ae63138db72f
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,144 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
public class Tower : MonoBehaviour
|
||||||
|
{
|
||||||
|
|
||||||
|
[Header("Assigned on start")]
|
||||||
|
[SerializeField] EnemyHandler enemyHandler;
|
||||||
|
[SerializeField] ScoreHandler scoreHandler;
|
||||||
|
|
||||||
|
[Header("Prefabs")]
|
||||||
|
[SerializeField] ParticleSystem _projectile;
|
||||||
|
[SerializeField] Transform weapon;
|
||||||
|
|
||||||
|
[Header("WeaponParameters")]
|
||||||
|
[SerializeField] float weaponRange = 40f;
|
||||||
|
[SerializeField] int damage = 1;
|
||||||
|
[SerializeField] float fireRate = 1;
|
||||||
|
[SerializeField] float projectileSpeed = 5;
|
||||||
|
[SerializeField] TargetStrategy targetStrategy = TargetStrategy.LowestHealth;
|
||||||
|
|
||||||
|
[Header("BuildParameters")]
|
||||||
|
[SerializeField] int cost = 30;
|
||||||
|
[SerializeField] float buildTimer = 1;
|
||||||
|
|
||||||
|
|
||||||
|
[Header("Stats")]
|
||||||
|
[SerializeField] float score = 0f;
|
||||||
|
|
||||||
|
#region Privates
|
||||||
|
[SerializeField] enum TargetStrategy { ClosestEnemy, LowestHealth };
|
||||||
|
private GameObject targetEnemy;
|
||||||
|
[SerializeField] private Transform[] buildingParts;
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Publics
|
||||||
|
public float MaxDistance { get; set; }
|
||||||
|
public int Damage { get => damage; set => damage = value; }
|
||||||
|
public int FireRate { get; set; }
|
||||||
|
public int Cost { get => cost; set => cost = value; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
buildingParts = GetComponentsInChildren<Transform>();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Start()
|
||||||
|
{
|
||||||
|
enemyHandler = FindObjectOfType<EnemyHandler>();
|
||||||
|
scoreHandler = FindObjectOfType<ScoreHandler>();
|
||||||
|
UpdateWeaponParameters(fireRate, projectileSpeed);
|
||||||
|
|
||||||
|
for (int i = 1; i < buildingParts.Length; i++)
|
||||||
|
{
|
||||||
|
buildingParts[i].gameObject.SetActive(false);
|
||||||
|
}
|
||||||
|
StartCoroutine(Build());
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator Build()
|
||||||
|
{
|
||||||
|
for (int i = 1; i < buildingParts.Length; i++)
|
||||||
|
{
|
||||||
|
buildingParts[i].gameObject.SetActive(true);
|
||||||
|
yield return new WaitForSeconds(buildTimer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void UpdateWeaponParameters(float _fireRate, float _projectileSpeed)
|
||||||
|
{
|
||||||
|
var main = _projectile.main;
|
||||||
|
main.startSpeed = _projectileSpeed;
|
||||||
|
|
||||||
|
var emission = _projectile.emission;
|
||||||
|
emission.rateOverTime = _fireRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update is called once per frame
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
ShootProjectile(false);
|
||||||
|
FindAndShootEnemy();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void FindAndShootEnemy()
|
||||||
|
{
|
||||||
|
float bestValue = Mathf.Infinity;
|
||||||
|
bool targetFound = false;
|
||||||
|
List<GameObject> enemies = enemyHandler.ReturnAllEnemies();
|
||||||
|
|
||||||
|
foreach (GameObject enemy in enemies)
|
||||||
|
{
|
||||||
|
float distanceToTarget = Vector3.Magnitude(enemy.transform.position - transform.position);
|
||||||
|
|
||||||
|
bool withinRange = distanceToTarget < weaponRange;
|
||||||
|
if (withinRange)
|
||||||
|
{
|
||||||
|
if (targetStrategy == TargetStrategy.ClosestEnemy)
|
||||||
|
{
|
||||||
|
bool isClosest = distanceToTarget < bestValue;
|
||||||
|
if (isClosest)
|
||||||
|
{
|
||||||
|
targetFound = true;
|
||||||
|
bestValue = distanceToTarget;
|
||||||
|
targetEnemy = enemy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (targetStrategy == TargetStrategy.LowestHealth)
|
||||||
|
{
|
||||||
|
float enemyHealth = enemy.GetComponent<EnemyHealth>().Health;
|
||||||
|
|
||||||
|
bool isLowestHealth = enemyHealth < bestValue;
|
||||||
|
if (isLowestHealth)
|
||||||
|
{
|
||||||
|
targetFound = true;
|
||||||
|
bestValue = enemyHealth;
|
||||||
|
targetEnemy = enemy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (targetFound)
|
||||||
|
{
|
||||||
|
weapon.transform.LookAt(targetEnemy.transform.position);
|
||||||
|
ShootProjectile(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ShootProjectile(bool _state)
|
||||||
|
{
|
||||||
|
var emissionModule = _projectile.emission;
|
||||||
|
emissionModule.enabled = _state;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UpdateScore(float _score)
|
||||||
|
{
|
||||||
|
score += _score;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: d3a16cf44e28f02409c23498ed14acf5
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Loading…
Reference in New Issue