Exemple #1
0
    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);
        }
    }
Exemple #2
0
    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;
            }
        }
    }
Exemple #3
0
    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;
        }
    }
Exemple #4
0
 // 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);
         }
     }
 }