// Update is called once per frame void FixedUpdate() { if (Input.GetAxis("Horizontal") != 0) { grounded = jumpTrigger.getGrounded(); var rot = Input.GetAxis("Horizontal") * Time.deltaTime; if (grounded) { rot *= rotSpeed; transform.RotateAround(worm.position, Vector3.up, -rot); } else { rot *= airRotSpeed; transform.RotateAround(worm.position, Vector3.up, -rot); } } }
// Update is called once per frame void Update() { grounded = jumpTrigger.getGrounded(); if (grounded) { canGrapple = true; } rb.maxAngularVelocity = maxAngVel; if (rb.velocity.magnitude > maxSpeed) { rb.velocity = rb.velocity.normalized * maxSpeed; } //To make sure the worm stays on the axis. rb.angularVelocity = new Vector3(rb.angularVelocity.x, 0, 0); if (transform.position.x != 0) { float xDis = transform.position.x; transform.position = Vector3.Scale(transform.position, new Vector3(0, 1, 1)); foreach (OuterWilds n in FindObjectsOfType <OuterWilds>()) { GameObject obj = n.gameObject; obj.transform.position = new Vector3(obj.transform.position.x - xDis, obj.transform.position.y, obj.transform.position.z); } } transform.eulerAngles = new Vector3(transform.eulerAngles.x, Mathf.Round(transform.eulerAngles.y / 180) * 180, Mathf.Round(transform.eulerAngles.z / 180) * 180); if (Input.GetKeyDown(KeyCode.Space)) { transform.localScale = Vector3.Scale(initialScale, new Vector3(1, 0.75f, 1)); transform.position = transform.position - transform.up * 0.75f; crouching = true; } //Grapple RaycastHit hit; Vector3 hitPoint = Vector3.zero; Vector3 buttPosition = transform.position + transform.TransformDirection(Vector3.down) * transform.localScale.y; if (Input.GetMouseButtonDown(0) && grappleHit.activeSelf && canGrapple) { canGrapple = false; if (Vector3.Distance(buttPosition, grappleHit.transform.position) < (minRopeLength + ropeSpacing) * numSegments) { float numRopes = Vector3.Distance(buttPosition, grappleHit.transform.position) / minRopeLength; createRope(numRopes, Vector3.Distance(buttPosition, grappleHit.transform.position), 0.05f); } else { createRope(numSegments, Vector3.Distance(buttPosition, grappleHit.transform.position), 0.05f); } } else if (Input.GetMouseButtonUp(0)) { destroyRope(); } if (!Input.GetMouseButton(0)) { //hinge.connectedBody = null; if (Physics.Raycast(buttPosition, transform.TransformDirection(Vector3.down), out hit, range) && canGrapple) { grappleHit.SetActive(true); grappleHit.transform.position = hit.point; Debug.DrawRay(buttPosition, transform.TransformDirection(Vector3.down) * range, Color.red); } else { grappleHit.SetActive(false); } } }