diff --git a/Assets/DummySquare.png b/Assets/Placeholder.png similarity index 100% rename from Assets/DummySquare.png rename to Assets/Placeholder.png diff --git a/Assets/DummySquare.png.meta b/Assets/Placeholder.png.meta similarity index 100% rename from Assets/DummySquare.png.meta rename to Assets/Placeholder.png.meta diff --git a/Assets/Prefabs/Charge Counter.prefab b/Assets/Prefabs/Charge Counter.prefab new file mode 100644 index 0000000..21b56a5 --- /dev/null +++ b/Assets/Prefabs/Charge Counter.prefab @@ -0,0 +1,45 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4683683892600594510 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4683683892600594511} + - component: {fileID: 4683683892600594508} + m_Layer: 0 + m_Name: Charge Counter + m_TagString: Charge Counter + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4683683892600594511 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4683683892600594510} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.035214074, y: 0.0026455899, z: -3.452033} + 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 &4683683892600594508 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4683683892600594510} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5d115d824ecafad44ac21d88fe4b0bca, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Prefabs/Charge Counter.prefab.meta b/Assets/Prefabs/Charge Counter.prefab.meta new file mode 100644 index 0000000..cd5ab42 --- /dev/null +++ b/Assets/Prefabs/Charge Counter.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 85fd029068587db4d95be8b3b62285c8 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Charge Point.prefab b/Assets/Prefabs/Charge Point.prefab new file mode 100644 index 0000000..3a923bf --- /dev/null +++ b/Assets/Prefabs/Charge Point.prefab @@ -0,0 +1,124 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6460630409594600933 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6460630409594600935} + - component: {fileID: 6460630409594600932} + - component: {fileID: 6460630409594600929} + - component: {fileID: 6460630409594600928} + m_Layer: 0 + m_Name: Charge Point + m_TagString: Charge Point + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6460630409594600935 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6460630409594600933} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -0.33, y: 2.15, 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!212 &6460630409594600932 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6460630409594600933} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: 85e455eb0e01f3b4b97dec1065971269, type: 3} + m_Color: {r: 0.093871, g: 1, b: 0, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 1, y: 1} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!61 &6460630409594600929 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6460630409594600933} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + 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.5, y: 0.5} + oldSize: {x: 1, y: 1} + newSize: {x: 1, y: 1} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 1, y: 1} + m_EdgeRadius: 0 +--- !u!114 &6460630409594600928 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6460630409594600933} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bbfc6aad33bc5d1409c0c44916c954e1, type: 3} + m_Name: + m_EditorClassIdentifier: + chargesRequired: 1 diff --git a/Assets/Prefabs/Charge Point.prefab.meta b/Assets/Prefabs/Charge Point.prefab.meta new file mode 100644 index 0000000..cca379e --- /dev/null +++ b/Assets/Prefabs/Charge Point.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 32fa01a5337b60d44bdc2573fd3ebe3f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index ea2102d..654f24f 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -204,7 +204,7 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1001 &2115795504294198323 +--- !u!1001 &1563259683 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 @@ -219,12 +219,12 @@ PrefabInstance: - target: {fileID: 2115795504606128410, guid: 0fecd55e0eb9020499d7ba0934555d41, type: 3} propertyPath: m_LocalPosition.x - value: -10.01 + value: 8.99 objectReference: {fileID: 0} - target: {fileID: 2115795504606128410, guid: 0fecd55e0eb9020499d7ba0934555d41, type: 3} propertyPath: m_LocalPosition.y - value: -0.02 + value: 0.02190405 objectReference: {fileID: 0} - target: {fileID: 2115795504606128410, guid: 0fecd55e0eb9020499d7ba0934555d41, type: 3} @@ -271,74 +271,79 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 2115795504606128415, guid: 0fecd55e0eb9020499d7ba0934555d41, + type: 3} + propertyPath: flipDirection + value: 1 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 0fecd55e0eb9020499d7ba0934555d41, type: 3} ---- !u!1001 &6403035723039066223 +--- !u!1001 &4683683891847250626 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + - target: {fileID: 4683683892600594510, guid: 85fd029068587db4d95be8b3b62285c8, + type: 3} + propertyPath: m_Name + value: Charge Counter + objectReference: {fileID: 0} + - target: {fileID: 4683683892600594511, guid: 85fd029068587db4d95be8b3b62285c8, type: 3} propertyPath: m_LocalPosition.x - value: 0 + value: -0.035214074 objectReference: {fileID: 0} - - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + - target: {fileID: 4683683892600594511, guid: 85fd029068587db4d95be8b3b62285c8, type: 3} propertyPath: m_LocalPosition.y - value: 0 + value: 0.0026455899 objectReference: {fileID: 0} - - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + - target: {fileID: 4683683892600594511, guid: 85fd029068587db4d95be8b3b62285c8, type: 3} propertyPath: m_LocalPosition.z - value: 0 + value: -3.452033 objectReference: {fileID: 0} - - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + - target: {fileID: 4683683892600594511, guid: 85fd029068587db4d95be8b3b62285c8, type: 3} propertyPath: m_LocalRotation.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + - target: {fileID: 4683683892600594511, guid: 85fd029068587db4d95be8b3b62285c8, type: 3} propertyPath: m_LocalRotation.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + - target: {fileID: 4683683892600594511, guid: 85fd029068587db4d95be8b3b62285c8, type: 3} propertyPath: m_LocalRotation.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + - target: {fileID: 4683683892600594511, guid: 85fd029068587db4d95be8b3b62285c8, type: 3} propertyPath: m_LocalRotation.w value: 1 objectReference: {fileID: 0} - - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + - target: {fileID: 4683683892600594511, guid: 85fd029068587db4d95be8b3b62285c8, type: 3} propertyPath: m_RootOrder value: 1 objectReference: {fileID: 0} - - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + - target: {fileID: 4683683892600594511, guid: 85fd029068587db4d95be8b3b62285c8, type: 3} propertyPath: m_LocalEulerAnglesHint.x value: 0 objectReference: {fileID: 0} - - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + - target: {fileID: 4683683892600594511, guid: 85fd029068587db4d95be8b3b62285c8, type: 3} propertyPath: m_LocalEulerAnglesHint.y value: 0 objectReference: {fileID: 0} - - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + - target: {fileID: 4683683892600594511, guid: 85fd029068587db4d95be8b3b62285c8, type: 3} propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} - - target: {fileID: 6403035724002954929, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, - type: 3} - propertyPath: m_Name - value: Wall - objectReference: {fileID: 0} m_RemovedComponents: [] - m_SourcePrefab: {fileID: 100100000, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 85fd029068587db4d95be8b3b62285c8, type: 3} diff --git a/Assets/Scripts/ChargeCounter.cs b/Assets/Scripts/ChargeCounter.cs new file mode 100644 index 0000000..8b7346b --- /dev/null +++ b/Assets/Scripts/ChargeCounter.cs @@ -0,0 +1,31 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ChargeCounter : MonoBehaviour +{ + GameObject[] chargePoints; + List chargedPoints = new List(); + + void Start() + { + if (chargePoints == null) chargePoints = GameObject.FindGameObjectsWithTag("Charge Point"); + } + + public void AddChargedPoint(GameObject chargePoint) + { + chargedPoints.Add(chargePoint); + DisplayCharges(); + } + + public void RemoveChargedPoint(GameObject chargePoint) + { + chargedPoints.Remove(chargePoint); + DisplayCharges(); + } + + void DisplayCharges() + { + Debug.Log("Total Points:" + chargedPoints.Count); + } +} diff --git a/Assets/Scripts/ChargeCounter.cs.meta b/Assets/Scripts/ChargeCounter.cs.meta new file mode 100644 index 0000000..71e8eb4 --- /dev/null +++ b/Assets/Scripts/ChargeCounter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5d115d824ecafad44ac21d88fe4b0bca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ChargePoint.cs b/Assets/Scripts/ChargePoint.cs new file mode 100644 index 0000000..ea648f5 --- /dev/null +++ b/Assets/Scripts/ChargePoint.cs @@ -0,0 +1,33 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class ChargePoint : MonoBehaviour +{ + public int chargesRequired = 1; + + int charges = 0; + bool charged = false; + ChargeCounter chargeCounter; + + void Start() + { + chargeCounter = GameObject.FindWithTag("Charge Counter").GetComponent(); + } + + public void adjustCharges(int amount = 1) + { + charges += amount; + + if (charges >= chargesRequired) + { + if (!charged) chargeCounter.AddChargedPoint(gameObject); + charged = true; + } + else + { + chargeCounter.RemoveChargedPoint(gameObject); + charged = false; + } + } +} diff --git a/Assets/Scripts/ChargePoint.cs.meta b/Assets/Scripts/ChargePoint.cs.meta new file mode 100644 index 0000000..0646b2e --- /dev/null +++ b/Assets/Scripts/ChargePoint.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bbfc6aad33bc5d1409c0c44916c954e1 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Laser.cs b/Assets/Scripts/Laser.cs index e42295c..58f9f05 100644 --- a/Assets/Scripts/Laser.cs +++ b/Assets/Scripts/Laser.cs @@ -5,10 +5,12 @@ using UnityEngine; public class Laser : MonoBehaviour { public bool flipDirection; + public int power = 1; float maxDistance = 1000.0f; bool isHorizontal; LineRenderer laserLine; + GameObject lastChargePoint; void Start() { @@ -19,22 +21,33 @@ public class Laser : MonoBehaviour void Update() { laserLine.SetPosition(0, transform.position); + RaycastHit2D hit; if (isHorizontal) { float endpointY = flipDirection ? transform.position.y - maxDistance : transform.position.y + maxDistance; - RaycastHit2D hit = Physics2D.Raycast(transform.position, flipDirection ? Vector2.down : Vector2.up); + hit = Physics2D.Raycast(transform.position, flipDirection ? Vector2.down : Vector2.up); if (hit.collider) endpointY = hit.collider.transform.position.y; laserLine.SetPosition(1, new Vector3(transform.position.x, endpointY, 0)); } else { float endpointX = flipDirection ? transform.position.x - maxDistance : transform.position.x + maxDistance; - RaycastHit2D hit = Physics2D.Raycast(transform.position, flipDirection ? Vector2.left : Vector2.right); + hit = Physics2D.Raycast(transform.position, flipDirection ? Vector2.left : Vector2.right); if (hit.collider) endpointX = hit.collider.transform.position.x; laserLine.SetPosition(1, new Vector3(endpointX, transform.position.y, 0)); } + + if (hit.collider && hit.collider.tag == "Charge Point") + { + if (hit.collider.gameObject != lastChargePoint) hit.collider.GetComponent().adjustCharges(power); + lastChargePoint = hit.collider.gameObject; + } else + { + if (lastChargePoint) lastChargePoint.GetComponent().adjustCharges(power * -1); + lastChargePoint = null; + } } void OnDrawGizmosSelected() diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 1c92a78..47832db 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -3,7 +3,9 @@ --- !u!78 &1 TagManager: serializedVersion: 2 - tags: [] + tags: + - Charge Point + - Charge Counter layers: - Default - TransparentFX