From 1945ada3d8946357ca8b31b58afdc833c8016fe2 Mon Sep 17 00:00:00 2001 From: Ava Gaiety Wroten Date: Sun, 14 Jun 2020 18:05:12 -0500 Subject: [PATCH] Laser Update refactor --- Assets/Scenes/SampleScene.unity | 215 +++++++++++++++++++++++++++++++- Assets/Scripts/Laser.cs | 73 +++++++---- 2 files changed, 257 insertions(+), 31 deletions(-) diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 4f0952d..e1b2a9e 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -121,6 +121,75 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1001 &178750765 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 6460630409594600933, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_Name + value: Charge Point (1) + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalPosition.x + value: -2.3136568 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalPosition.y + value: 2.7764423 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_RootOrder + value: 2 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, type: 3} --- !u!1 &519420028 GameObject: m_ObjectHideFlags: 0 @@ -204,6 +273,75 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &1261279073 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + type: 3} + propertyPath: m_LocalPosition.x + value: -5.079479 + objectReference: {fileID: 0} + - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + type: 3} + propertyPath: m_LocalPosition.y + value: 1.5528967 + objectReference: {fileID: 0} + - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + type: 3} + propertyPath: m_RootOrder + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6403035724002954895, guid: d9378c4b4a9bc334d8e289cbcd7a5bed, + 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} --- !u!1001 &1563259683 PrefabInstance: m_ObjectHideFlags: 0 @@ -254,7 +392,7 @@ PrefabInstance: - target: {fileID: 2115795504606128410, guid: 0fecd55e0eb9020499d7ba0934555d41, type: 3} propertyPath: m_RootOrder - value: 2 + value: 5 objectReference: {fileID: 0} - target: {fileID: 2115795504606128410, guid: 0fecd55e0eb9020499d7ba0934555d41, type: 3} @@ -333,7 +471,7 @@ PrefabInstance: - target: {fileID: 2115795504606128410, guid: 0fecd55e0eb9020499d7ba0934555d41, type: 3} propertyPath: m_RootOrder - value: 4 + value: 6 objectReference: {fileID: 0} - target: {fileID: 2115795504606128410, guid: 0fecd55e0eb9020499d7ba0934555d41, type: 3} @@ -357,6 +495,75 @@ PrefabInstance: objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 0fecd55e0eb9020499d7ba0934555d41, type: 3} +--- !u!1001 &2082153622 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 6460630409594600933, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_Name + value: Charge Point + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalPosition.x + value: -7.136117 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalPosition.y + value: -0.16716063 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 6460630409594600935, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 32fa01a5337b60d44bdc2573fd3ebe3f, type: 3} --- !u!1 &2114209081 GameObject: m_ObjectHideFlags: 0 @@ -438,7 +645,7 @@ Transform: m_LocalScale: {x: 0.2, y: 0.2, z: 0.2} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &2114209084 MonoBehaviour: @@ -534,7 +741,7 @@ PrefabInstance: - target: {fileID: 4683683892600594511, guid: 85fd029068587db4d95be8b3b62285c8, type: 3} propertyPath: m_RootOrder - value: 1 + value: 4 objectReference: {fileID: 0} - target: {fileID: 4683683892600594511, guid: 85fd029068587db4d95be8b3b62285c8, type: 3} diff --git a/Assets/Scripts/Laser.cs b/Assets/Scripts/Laser.cs index a17d641..a5b90d8 100644 --- a/Assets/Scripts/Laser.cs +++ b/Assets/Scripts/Laser.cs @@ -20,48 +20,67 @@ public class Laser : MonoBehaviour void Update() { - laserLine.SetPosition(0, transform.position); + RaycastHit2D hit = DrawLaser(transform.position); + HandleHit(hit); + } + + RaycastHit2D DrawLaser(Vector3 startPosition) + { + laserLine.SetPosition(0, startPosition); RaycastHit2D hit; if (isHorizontal) { - float endpointY = flipDirection ? transform.position.y - maxDistance : transform.position.y + maxDistance; - hit = Physics2D.Raycast(transform.position, flipDirection ? Vector2.down : Vector2.up); + float endpointY = flipDirection ? startPosition.y - maxDistance : startPosition.y + maxDistance; + hit = Physics2D.Raycast(startPosition, flipDirection ? Vector2.down : Vector2.up); if (hit.collider) laserLine.SetPosition(1, hit.point); - else laserLine.SetPosition(1, new Vector3(transform.position.x, endpointY, 0)); + else laserLine.SetPosition(1, new Vector3(startPosition.x, endpointY, 0)); } else { - float endpointX = flipDirection ? transform.position.x - maxDistance : transform.position.x + maxDistance; - hit = Physics2D.Raycast(transform.position, flipDirection ? Vector2.left : Vector2.right); + float endpointX = flipDirection ? startPosition.x - maxDistance : startPosition.x + maxDistance; + hit = Physics2D.Raycast(startPosition, flipDirection ? Vector2.left : Vector2.right); if (hit.collider) laserLine.SetPosition(1, hit.point); - else laserLine.SetPosition(1, new Vector3(endpointX, transform.position.y, 0)); + else laserLine.SetPosition(1, new Vector3(endpointX, startPosition.y, 0)); } + return hit; + } + + void HandleHit(RaycastHit2D hit) + { if (hit.collider) { - if (hit.collider.tag == "Mirror") - { - Debug.Log("Hit Mirror"); - if (isHorizontal) - { - // TODO - } else - { - // TODO - } - } - if (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; + if (hit.collider.tag == "Mirror") HitMirror(hit); + if (hit.collider.tag == "Charge Point") HitChargePoint(hit); } + else HitNothing(); + } + + void HitMirror(RaycastHit2D hit) + { + + if (isHorizontal) + { + // TODO + } + else + { + // TODO + } + } + + void HitChargePoint(RaycastHit2D hit) + { + if (hit.collider.gameObject != lastChargePoint) hit.collider.GetComponent().adjustCharges(power); + lastChargePoint = hit.collider.gameObject; + } + + void HitNothing() + { + if (lastChargePoint) lastChargePoint.GetComponent().adjustCharges(power * -1); + lastChargePoint = null; } void OnDrawGizmosSelected()