aboutsummaryrefslogtreecommitdiff
path: root/td/Assets/Scripts
diff options
context:
space:
mode:
Diffstat (limited to 'td/Assets/Scripts')
-rw-r--r--td/Assets/Scripts/Enemy.cs39
-rw-r--r--td/Assets/Scripts/Enemy.cs.meta12
-rw-r--r--td/Assets/Scripts/EnemySpawner.cs27
-rw-r--r--td/Assets/Scripts/EnemySpawner.cs.meta12
-rw-r--r--td/Assets/Scripts/PinchZoom.cs144
-rw-r--r--td/Assets/Scripts/PinchZoom.cs.meta12
-rw-r--r--td/Assets/Scripts/cameraHandler.cs139
-rw-r--r--td/Assets/Scripts/cameraHandler.cs.meta12
8 files changed, 397 insertions, 0 deletions
diff --git a/td/Assets/Scripts/Enemy.cs b/td/Assets/Scripts/Enemy.cs
new file mode 100644
index 0000000..7273370
--- /dev/null
+++ b/td/Assets/Scripts/Enemy.cs
@@ -0,0 +1,39 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class Enemy : MonoBehaviour {
+
+ public float speed;
+ public float initialHp;
+ public Transform pathWay;
+
+ List<Vector3> waypoints = new List<Vector3>();
+ Vector3 waypointPos;
+ int waypointNum = -1; // Using minus one so that first addition returns 0, first element in array
+
+ void Start () {
+ foreach (Transform child in pathWay) {
+ waypoints.Add (child.position);
+ }
+ }
+
+ void Update () {
+ updateWaypoint ();
+
+ float transformStep = speed * Time.deltaTime;
+ transform.position = Vector3.MoveTowards (transform.position, waypointPos, transformStep);
+
+ if (waypointNum == waypoints.Count - 1) {
+ Destroy (gameObject);
+ }
+ }
+
+ void updateWaypoint() {
+ if ( (transform.position == waypointPos && waypointNum < waypoints.Count - 1) || waypointNum == -1) {
+ waypointNum++;
+ waypointPos = new Vector3 (waypoints [waypointNum].x, 0.604f, waypoints [waypointNum].z);
+ }
+ }
+
+}
diff --git a/td/Assets/Scripts/Enemy.cs.meta b/td/Assets/Scripts/Enemy.cs.meta
new file mode 100644
index 0000000..73d0664
--- /dev/null
+++ b/td/Assets/Scripts/Enemy.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 32a95d77f1e1f481886733800e38e797
+timeCreated: 1506604935
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/td/Assets/Scripts/EnemySpawner.cs b/td/Assets/Scripts/EnemySpawner.cs
new file mode 100644
index 0000000..eb0dd43
--- /dev/null
+++ b/td/Assets/Scripts/EnemySpawner.cs
@@ -0,0 +1,27 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class EnemySpawner : MonoBehaviour {
+
+ public Enemy enemyPrefab;
+ public Transform pathWay;
+ public Transform gameWorld;
+
+ int wave;
+ int next = 1;
+ int n = 0;
+
+ void Update () {
+ n++;
+
+ if (n == next) {
+ n = 0;
+ next = (int)Random.Range (50, 400);
+
+ Enemy newEnemy = Instantiate (enemyPrefab, new Vector3(0, 0, 0), Quaternion.identity, gameWorld);
+ newEnemy.GetComponent <Enemy> ().pathWay = pathWay;
+ newEnemy.GetComponent <Enemy> ().speed = Random.Range (0.3f, 1.2f);
+ }
+ }
+}
diff --git a/td/Assets/Scripts/EnemySpawner.cs.meta b/td/Assets/Scripts/EnemySpawner.cs.meta
new file mode 100644
index 0000000..3fe504e
--- /dev/null
+++ b/td/Assets/Scripts/EnemySpawner.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 3e57c25f0405b40cab5c30b2c92671ae
+timeCreated: 1506633566
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/td/Assets/Scripts/PinchZoom.cs b/td/Assets/Scripts/PinchZoom.cs
new file mode 100644
index 0000000..b3e6d22
--- /dev/null
+++ b/td/Assets/Scripts/PinchZoom.cs
@@ -0,0 +1,144 @@
+using UnityEngine;
+using System.Collections;
+
+public class PinchZoom : MonoBehaviour
+{
+ /* Dette vil bare funke for et ortografisk kamera! */
+
+ private static readonly float PanSpeed = 20f;
+ private static readonly float ZoomSpeedTouch = 0.1f;
+ private static readonly float ZoomSpeedMouse = .5f;
+
+ public static readonly float[] BoundsX = new float[]{-10f, 5f};
+ public static readonly float[] BoundsZ = new float[]{-18f, -4f};
+ public static readonly float[] ZoomBounds = new float[]{10f, 85f};
+
+ private Camera cam;
+
+ private bool panActive;
+ private Vector3 lastPanPosition;
+ private int panFingerId; // Touch mode only
+
+ private bool zoomActive;
+ private Vector2[] lastZoomPositions; // Touch mode only
+
+ void Awake() {
+ cam = GetComponent<Camera>();
+
+ #if UNITY_ANDROID || UNITY_IOS
+ cam.fieldOfView = 60f;
+ #endif
+ }
+
+ void Update() {
+ // If there's an open menu, or the clicker is being pressed, ignore the touch.
+ /*
+ if (GameManager.Instance.MenuManager.HasOpenMenu || GameManager.Instance.BitSpawnManager.IsSpawningBits) {
+ return;
+ }*/
+
+ if (Input.touchSupported && Application.platform != RuntimePlatform.WebGLPlayer) {
+ HandleTouch();
+ } else {
+ HandleMouse();
+ }
+ }
+
+ void HandleTouch() {
+ switch(Input.touchCount) {
+
+ case 1: // Panning
+ zoomActive = false;
+
+ // If the touch began, capture its position and its finger ID.
+ // Otherwise, if the finger ID of the touch doesn't match, skip it.
+ Touch touch = Input.GetTouch(0);
+ if (touch.phase == TouchPhase.Began) {
+ lastPanPosition = touch.position;
+ panFingerId = touch.fingerId;
+ panActive = true;
+ } else if (touch.fingerId == panFingerId && touch.phase == TouchPhase.Moved) {
+ PanCamera(touch.position);
+ }
+ break;
+
+ case 2: // Zooming
+ panActive = false;
+
+ Vector2[] newPositions = new Vector2[]{Input.GetTouch(0).position, Input.GetTouch(1).position};
+ if (!zoomActive) {
+ lastZoomPositions = newPositions;
+ zoomActive = true;
+ } else {
+ // Zoom based on the distance between the new positions compared to the
+ // distance between the previous positions.
+ float newDistance = Vector2.Distance(newPositions[0], newPositions[1]);
+ float oldDistance = Vector2.Distance(lastZoomPositions[0], lastZoomPositions[1]);
+ float offset = newDistance - oldDistance;
+
+ ZoomCamera(offset, ZoomSpeedTouch);
+
+ lastZoomPositions = newPositions;
+ }
+ break;
+
+ default:
+ panActive = false;
+ zoomActive = false;
+ break;
+ }
+ }
+
+ void HandleMouse() {
+ // On mouse down, capture it's position.
+ // On mouse up, disable panning.
+ // If there is no mouse being pressed, do nothing.
+ if (Input.GetMouseButtonDown(0)) {
+ panActive = true;
+ lastPanPosition = Input.mousePosition;
+ } else if (Input.GetMouseButtonUp(0)) {
+ panActive = false;
+ } else if (Input.GetMouseButton(0)) {
+ PanCamera(Input.mousePosition);
+ }
+
+ // Check for scrolling to zoom the camera
+ float scroll = Input.GetAxis("Mouse ScrollWheel");
+ zoomActive = true;
+ ZoomCamera(scroll, ZoomSpeedMouse);
+ zoomActive = false;
+ }
+
+ void PanCamera(Vector3 newPanPosition) {
+ if (!panActive) {
+ return;
+ }
+
+ // Translate the camera position based on the new input position
+ Vector3 offset = cam.ScreenToViewportPoint(lastPanPosition - newPanPosition);
+ Vector3 move = new Vector3(offset.x * PanSpeed, 0, offset.y * PanSpeed);
+ transform.Translate(move, Space.World);
+ ClampToBounds();
+
+ lastPanPosition = newPanPosition;
+ }
+
+ void ZoomCamera(float offset, float speed) {
+ if (!zoomActive || offset == 0) {
+ return;
+ }
+
+ cam.fieldOfView = Mathf.Clamp(cam.fieldOfView - (offset * speed), ZoomBounds[0], ZoomBounds[1]);
+ }
+
+ void ClampToBounds() {
+ Vector3 pos = transform.position;
+ pos.x = Mathf.Clamp(transform.position.x, BoundsX[0], BoundsX[1]);
+ pos.z = Mathf.Clamp(transform.position.z, BoundsZ[0], BoundsZ[1]);
+
+ transform.position = pos;
+ }
+
+
+
+} \ No newline at end of file
diff --git a/td/Assets/Scripts/PinchZoom.cs.meta b/td/Assets/Scripts/PinchZoom.cs.meta
new file mode 100644
index 0000000..6303bbc
--- /dev/null
+++ b/td/Assets/Scripts/PinchZoom.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 3770bdc9b6c954c1782333bdf04c01c6
+timeCreated: 1506636352
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/td/Assets/Scripts/cameraHandler.cs b/td/Assets/Scripts/cameraHandler.cs
new file mode 100644
index 0000000..a4aa660
--- /dev/null
+++ b/td/Assets/Scripts/cameraHandler.cs
@@ -0,0 +1,139 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class cameraHandler : MonoBehaviour {
+
+ public float PanSpeed = 20f;
+ public float ZoomSpeedTouch = 0.1f;
+ public float ZoomSpeedMouse = .5f;
+
+ public static readonly float[] BoundsX = new float[]{-10f, 10f};
+ public static readonly float[] BoundsY = new float[]{-5f, 10f};
+ public static readonly float[] BoundsZ = new float[]{-8f, 8f};
+ public static readonly float[] ZoomBounds = new float[]{1f, 5f};
+
+ private Camera cam;
+
+ private bool panActive;
+ private Vector3 lastPanPosition;
+ private int panFingerId; // Touch mode only
+
+ private bool zoomActive;
+ private Vector2[] lastZoomPositions; // Touch mode only
+
+ void Awake() {
+ cam = GetComponent<Camera>();
+ }
+
+ void Update() {
+ // If there's an open menu, or the clicker is being pressed, ignore the touch.
+ /*
+ if (GameManager.Instance.MenuManager.HasOpenMenu || GameManager.Instance.BitSpawnManager.IsSpawningBits) {
+ return;
+ }*/
+
+ if (Input.touchSupported && Application.platform != RuntimePlatform.WebGLPlayer) {
+ HandleTouch();
+ } else {
+ //HandleMouse();
+ }
+ HandleTouch ();
+ }
+
+ void HandleTouch() {
+ switch(Input.touchCount) {
+
+ case 1: // Panning
+ zoomActive = false;
+
+ // If the touch began, capture its position and its finger ID.
+ // Otherwise, if the finger ID of the touch doesn't match, skip it.
+ Touch touch = Input.GetTouch(0);
+ if (touch.phase == TouchPhase.Began) {
+ lastPanPosition = touch.position;
+ panFingerId = touch.fingerId;
+ panActive = true;
+ } else if (touch.fingerId == panFingerId && touch.phase == TouchPhase.Moved) {
+ PanCamera(touch.position);
+ }
+ break;
+
+ case 2: // Zooming
+ panActive = false;
+
+ Vector2[] newPositions = new Vector2[]{Input.GetTouch(0).position, Input.GetTouch(1).position};
+ if (!zoomActive) {
+ lastZoomPositions = newPositions;
+ zoomActive = true;
+ } else {
+ // Zoom based on the distance between the new positions compared to the
+ // distance between the previous positions.
+ float newDistance = Vector2.Distance(newPositions[0], newPositions[1]);
+ float oldDistance = Vector2.Distance(lastZoomPositions[0], lastZoomPositions[1]);
+ float offset = newDistance - oldDistance;
+
+ ZoomCamera(offset, ZoomSpeedTouch);
+
+ lastZoomPositions = newPositions;
+ }
+ break;
+
+ default:
+ panActive = false;
+ zoomActive = false;
+ break;
+ }
+ }
+
+ void HandleMouse() {
+ // On mouse down, capture it's position.
+ // On mouse up, disable panning.
+ // If there is no mouse being pressed, do nothing.
+ if (Input.GetMouseButtonDown(0)) {
+ panActive = true;
+ lastPanPosition = Input.mousePosition;
+ } else if (Input.GetMouseButtonUp(0)) {
+ panActive = false;
+ } else if (Input.GetMouseButton(0)) {
+ PanCamera(Input.mousePosition);
+ }
+
+ // Check for scrolling to zoom the camera
+ float scroll = Input.GetAxis("Mouse ScrollWheel");
+ zoomActive = true;
+ ZoomCamera(scroll, ZoomSpeedMouse);
+ zoomActive = false;
+ }
+
+ void ZoomCamera(float offset, float speed) {
+ if (!zoomActive || offset == 0) {
+ return;
+ }
+
+ cam.orthographicSize = Mathf.Clamp(cam.orthographicSize - (offset * speed), ZoomBounds[0], ZoomBounds[1]);
+ }
+
+ void PanCamera(Vector3 newPanPosition) {
+ if (!panActive) {
+ return;
+ }
+
+ // Translate the camera position based on the new input position
+ Vector3 offset = cam.ScreenToViewportPoint(lastPanPosition - newPanPosition);
+ Vector3 move = new Vector3(offset.x * PanSpeed, offset.y * PanSpeed, 0f);
+ transform.Translate(move, Space.World);
+ ClampToBounds();
+
+ lastPanPosition = newPanPosition;
+ }
+
+ void ClampToBounds() {
+ Vector3 pos = transform.position;
+ pos.x = Mathf.Clamp(transform.position.x, BoundsX[0], BoundsX[1]);
+ pos.z = Mathf.Clamp(transform.position.z, BoundsZ[0], BoundsZ[1]);
+
+ transform.position = pos;
+ }
+
+}
diff --git a/td/Assets/Scripts/cameraHandler.cs.meta b/td/Assets/Scripts/cameraHandler.cs.meta
new file mode 100644
index 0000000..569bdd5
--- /dev/null
+++ b/td/Assets/Scripts/cameraHandler.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 3a9cb2108387b493a85293ad9842ad3c
+timeCreated: 1506636952
+licenseType: Free
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: