Exemplo n.º 1
0
 private void OnControllerColliderHit(ControllerColliderHit hit)
 {
     if (hit.collider.CompareTag("Zipline"))
     {
         Zipline zipline = hit.transform.parent.gameObject.GetComponent <Zipline>();
         zipLineCarrier = hit.transform;
         zipline?.Move(zipLineSpeed, hit.point);
         isZipLining = true;
     }
 }
Exemplo n.º 2
0
    void OnControllerColliderHit(ControllerColliderHit hit)
    {
        if (hit.collider.CompareTag("Pushable"))
        {
            Rigidbody rb      = hit.gameObject.GetComponent <Rigidbody>();
            Vector3   dir     = rb.transform.position - transform.position;
            Vector3   pushDir = new Vector3(dir.x, 0f, dir.x);
            rb.AddForce(pushDir * speed);
        }

        if (Input.GetKey(interact))
        {
            if (hit.collider.CompareTag("Rope"))
            {
                if (!isSwinging)
                {
                    Rigidbody rb      = hit.transform.parent.gameObject.GetComponent <Rigidbody>();
                    Vector3   dir     = rb.transform.position - transform.position;
                    float     fl      = Max(dir.x, dir.z);
                    Vector3   pushDir = new Vector3(dir.x / Abs(fl), 0f, dir.z / Abs(fl));
                    rb.AddForce(pushDir * ropeSpeed);
                    rope      = rb.transform;
                    hitOffset = hit.point - rope.position;
                    rope.GetChild(0).GetComponent <CapsuleCollider>().enabled = false;
                    isSwinging = true;
                }
            }
            if (hit.collider.CompareTag("Zipline"))
            {
                Zipline zipline = hit.transform.parent.gameObject.GetComponent <Zipline>();
                zipLineCarrier = hit.transform;
                zipline?.Move(zipLineSpeed, hit.point);
                isZipLining = true;
            }
        }
    }