private void Start() { GameObject.Find("TagCatalogue").GetComponent <TagCatalogue>().UpdateCatalogue(transform); var jumpPoints = TagCatalogue.FindAllWithTag(Tag.JumpPoint); foreach (var j in jumpPoints) { j.gameObject.GetComponent <Renderer>().enabled = false; } var colliders = TagCatalogue.FindAllWithTag(Tag.Collider); foreach (var j in colliders) { j.gameObject.GetComponent <Renderer>().enabled = false; } var spawnPoints = TagCatalogue.FindAllWithTag(Tag.SpawnPoint); foreach (var j in spawnPoints) { j.gameObject.GetComponent <Renderer>().enabled = false; } if (backtrackBlocker) { backtrackBlocker.SetActive(false); } }
private void Select() { if (selectedItem != null) { selectedItem.GetComponent <Interactable>().Deselect(); selectedItem = null; } var interactables = TagCatalogue.FindAllWithTag(Tag.Interactable) .Where( obj => Utils.InRange(transform.position, obj.transform.position) && transform.position.y < obj.transform.position.y && (heldItem == null || !obj.Equals(heldItem.gameObject))) .OrderBy(obj => Mathf.Abs(Vector3.Angle(transform.forward, obj.transform.position - transform.position))); if (interactables.Count() != 0) { GameObject closest = interactables.ElementAt(0); Vector3 v = closest.transform.position - transform.position; v.y = 0; if (Vector3.Angle(transform.forward, v) <= selectionThreshold) { closest.GetComponent <Interactable>().Select(gameObject); selectedItem = closest; } } }
private void JumpSelect() { var jps = TagCatalogue.FindAllWithTag(Tag.JumpPoint) .Where(obj => obj.transform.parent != this.transform && Utils.InJumpRange(transform.position, obj.transform.position) && transform.position.y + 0.6f < obj.transform.position.y) .OrderBy(obj => Vector3.Angle(transform.forward, obj.transform.position - transform.position)); jps = jps.Where(j => Vector3.Angle(new Vector3(j.transform.position.x, 0, j.transform.position.z), new Vector3(transform.position.x, 0, transform.position.z)) <= selectionThreshold) .OrderBy(j => Vector3.Angle(new Vector3(j.transform.position.x, 0, j.transform.position.z), new Vector3(transform.position.x, 0, transform.position.z))); if (jps.Count() > 0) { jumpFrom = transform.position; if (!isHoldingObj(jps.ElementAt(0))) { jumpTo = jps.ElementAt(0).transform.position; jumpArrowInstance.GetComponent <Renderer>().enabled = true; Vector3 direction = transform.position - jumpTo.Value; direction.y = 0; direction = Utils.NearestCardinal(direction) * 0.5f; if (direction.z == 0) { jumpArrowInstance.transform.rotation = Quaternion.Euler(0, 90, 0); } else { jumpArrowInstance.transform.rotation = Quaternion.Euler(0, 0, 0); } Vector3 jumpArrowPos = jumpTo.Value + (Vector3.down * 0.5f) + direction; jumpArrowInstance.transform.position = jumpArrowPos; } } else { jumpTo = null; jumpFrom = null; jumpArrowInstance.GetComponent <Renderer>().enabled = false; } }
// Update is called once per frame void Update() { if (on && child == null) { var objs = TagCatalogue.FindAllWithTag(Tag.Magnetic).Where(o => InMaxRange(o)).OrderBy(o => Vector3.Distance(transform.position, o.transform.position)); if (objs.Count() > 0) { var obj = objs.First(); print(obj); prevParent = obj.transform.parent; child = obj.transform; foreach (Transform j in child) { if (j.gameObject.name == "JumpPoint") { j.gameObject.SetActive(false); } } child.SetParent(transform); StartCoroutine("Pull", obj); } } }