diff options
author | Jakob Stendahl <jakst070500@ntvgs.no> | 2017-09-29 12:42:11 +0200 |
---|---|---|
committer | Jakob Stendahl <jakst070500@ntvgs.no> | 2017-09-29 12:42:11 +0200 |
commit | 76cf99ade6530bdad81088295fb4cf73f5c5b118 (patch) | |
tree | e3cf549687d164c11d6b292d771534e98bcc97a8 /td/Assets/Scripts | |
parent | 608b6a0e692a580f0dfabef0b2ef1a59f0a37234 (diff) | |
parent | 9a00d03f80eee94c9fe52f832a0127d9375ad375 (diff) | |
download | TD-76cf99ade6530bdad81088295fb4cf73f5c5b118.tar.gz TD-76cf99ade6530bdad81088295fb4cf73f5c5b118.zip |
Merge branch 'master' of https://github.com/JakobS1n/unityTest
Diffstat (limited to 'td/Assets/Scripts')
-rw-r--r-- | td/Assets/Scripts/Enemy.cs | 39 | ||||
-rw-r--r-- | td/Assets/Scripts/Enemy.cs.meta | 12 | ||||
-rw-r--r-- | td/Assets/Scripts/EnemySpawner.cs | 27 | ||||
-rw-r--r-- | td/Assets/Scripts/EnemySpawner.cs.meta | 12 | ||||
-rw-r--r-- | td/Assets/Scripts/PinchZoom.cs | 144 | ||||
-rw-r--r-- | td/Assets/Scripts/PinchZoom.cs.meta | 12 | ||||
-rw-r--r-- | td/Assets/Scripts/cameraHandler.cs | 139 | ||||
-rw-r--r-- | td/Assets/Scripts/cameraHandler.cs.meta | 12 |
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: |