protected virtual void ClimbLadder(KeyCode keyUp, KeyCode keyDown) { bool inputUp = Input.GetKey(keyUp); bool inputDown = Input.GetKey(keyDown); if ((climbObject != null && !jump) && !(climbObject.IsLowerThenCenter(transform.position) && charactorController.grounded && inputDown)) { //GameObject ladder = topHit.collider.gameObject; if (inputUp || inputDown) { gameObject.layer = LayerMask.NameToLayer(LayerName.climb); climb = true; transform.position = new Vector3(climbObject.transform.position.x, transform.position.y, transform.position.z); } } else { gameObject.layer = LayerMask.NameToLayer(LayerName.player); climb = false; } Debug.Log($"Climb Power : {verticalMove}"); charactorController.Climb(verticalMove * Time.fixedDeltaTime, climb); Debug.DrawRay(transform.position, Vector2.up * rayUpDistance, Color.red); }
void FixedUpdate() { charactorController.Move(horizontalMove * Time.fixedDeltaTime, crouch, jump); // Raycast for ladder climbing RaycastHit2D topHit = Physics2D.Raycast(transform.position, Vector2.up, rayUpDistance, whatIsLadder); if (topHit.collider != null) { GameObject ladder = topHit.collider.gameObject; if (Input.GetKeyDown(KeyCode.W) || Input.GetKeyDown(KeyCode.S) || Input.GetKeyDown(KeyCode.UpArrow) || Input.GetKeyDown(KeyCode.DownArrow)) { gameObject.layer = LayerMask.NameToLayer("Climb"); climb = true; } //if (Input.GetKeyDown(KeyCode.UpArrow) || Input.GetKeyDown(KeyCode.DownArrow)) //{ // gameObject.layer = LayerMask.NameToLayer("Climb"); // climb = true; //} } else { gameObject.layer = LayerMask.NameToLayer("Player"); climb = false; } charactorController.Climb(verticalMove * Time.fixedDeltaTime, climb); RaycastHit2D hit = Physics2D.Raycast(new Vector2(transform.position.x + 0.15f * transform.localScale.x, transform.position.y), Vector2.right * transform.localScale.x, 0.5f, LayerMask.GetMask("Crate")); if (hit) { if (hit.transform.tag == "Crate") { if (Input.GetKey(KeyCode.Return)) { holdCrate = true; if ((transform.localScale.x < 0 && horizontalMove < 0) || (transform.localScale.x > 0 && horizontalMove > 0)) { //Debug.Log(hit.transform.name); hit.rigidbody.AddForce(new Vector2(transform.localScale.x * 20 * Time.deltaTime, 0), ForceMode2D.Force); hit.transform.gameObject.GetComponent <Crate>().ActiveCrate(); } } else { holdCrate = false; } } else { holdCrate = false; } } else { holdCrate = false; } Debug.DrawRay(new Vector2(transform.position.x + (0.15f * transform.localScale.x), transform.position.y), Vector2.right * transform.localScale.x * 0.5f, Color.green); jump = false; }