Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class PlayerMotor : MonoBehaviour
- {
- public static PlayerMotor self;
- Vector3 storedAngle;
- public int currentPoint;
- public TileIdentifier currentTile;
- public TileIdentifier nextTile;
- public float speed;
- bool displaySelection;
- bool buttonsEnabled;
- public TileIdentifier targetMissing;
- public AudioSource gemSound;
- public int drillTier;
- private void Awake()
- {
- self = this;
- }
- void Update()
- {
- if (!TileManager.self.lossScreen.gameObject.activeInHierarchy)
- {
- if (transform.position == currentTile.points[currentTile.points.Count - 1] && nextTile != null)
- {
- currentTile = nextTile;
- nextTile = null;
- currentPoint = 0;
- Vector3 rot = transform.eulerAngles;
- transform.LookAt(currentTile.points[currentPoint]);
- transform.rotation = Quaternion.Euler(transform.eulerAngles.x, transform.eulerAngles.y, transform.eulerAngles.z);
- storedAngle = transform.eulerAngles;
- transform.rotation = Quaternion.Euler(rot);
- }
- if (transform.position == currentTile.points[currentPoint] && currentPoint != currentTile.points.Count - 1)
- {
- currentPoint += 1;
- Vector3 rot = transform.eulerAngles;
- transform.LookAt(currentTile.points[currentPoint]);
- transform.rotation = Quaternion.Euler(transform.eulerAngles.x, transform.eulerAngles.y, transform.eulerAngles.z);
- storedAngle = transform.eulerAngles;
- transform.rotation = Quaternion.Euler(rot);
- }
- if (transform.position != currentTile.points[currentTile.points.Count - 1])
- {
- transform.position = Vector3.MoveTowards(transform.position, currentTile.points[currentPoint], speed / 25);
- transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(storedAngle), .075f * (1 + speed));
- }
- }
- }
- private void OnTriggerEnter(Collider other)
- {
- if (other.gameObject.tag == "Track")
- {
- //Debug.Log("Entering Track!");
- nextTile = other.GetComponent<TileIdentifier>();
- if (!nextTile.isMissing)
- {
- if (!TileManager.self.buttonsEnabled)
- {
- RaycastHit[] hits;
- hits = Physics.RaycastAll(transform.position, transform.forward, 10);
- if (hits.Length == 0)
- {
- return;
- }
- else
- {
- for (int i = 0; i < hits.Length - 1; i++)
- {
- if (hits[i].collider.gameObject.GetComponent<TileIdentifier>() && !displaySelection)
- {
- if (hits[i].collider.gameObject.GetComponent<TileIdentifier>().isMissing)
- {
- targetMissing = hits[i].collider.gameObject.GetComponent<TileIdentifier>();
- displaySelection = true;
- if (hits[i].point.x == targetMissing.GetComponent<Collider>().bounds.min.x)
- {
- targetMissing.direction = 1;
- }
- else if (hits[i].point.x == targetMissing.GetComponent<Collider>().bounds.max.x)
- {
- targetMissing.direction = 3;
- }
- else if (hits[i].point.x == targetMissing.GetComponent<Collider>().bounds.min.z)
- {
- targetMissing.direction = 0;
- }
- else if (hits[i].point.x == targetMissing.GetComponent<Collider>().bounds.max.z)
- {
- targetMissing.direction = 2;
- }
- if (displaySelection == true)
- {
- displaySelection = false;
- buttonsEnabled = true;
- TileManager.self.ShowTiles();
- }
- break;
- }
- }
- }
- }
- if (displaySelection == true)
- {
- displaySelection = false;
- buttonsEnabled = true;
- TileManager.self.ShowTiles();
- }
- }
- }
- else
- {
- TileManager.self.lossScreen.gameObject.SetActive(true);
- }
- if (other.gameObject.tag == "GreenGem")
- {
- TrackManager.t.gemScore += 1;
- TrackManager.t.Gems.text = ": " + TrackManager.t.gemScore;
- speed += .004f;
- other.gameObject.SetActive(false);
- other.GetComponent<GemIdenfidier>().InvokeReEnable();
- gemSound.Play();
- }
- if (other.gameObject.tag == "Key")
- {
- TrackManager.t.AddKey();
- Destroy(other.gameObject);
- }
- if (other.gameObject.tag == "Blockade")
- {
- TileManager.self.lossScreen.gameObject.SetActive(true);
- }
- }
- //Debug.Log("Done processing Track!");
- }
- private void OnDrawGizmos()
- {
- Debug.DrawRay(transform.position, transform.forward, Color.cyan, 4);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement