void Update() { var modpos = transform.position; modpos.y += JumpDistance / 2; RaycastHit hit; if (!isInvulnerable && Physics.Raycast(modpos, Vector3.down, out hit, JumpDistance, Lethal)) { _gameManager.Lose(); return; } if (Time.time - invulnerabilityStart >= invulnerabilityTime && isInvulnerable) { isInvulnerable = false; } if (Input.GetKeyDown(KeyCode.Space) && Physics.Raycast(modpos, Vector3.down, JumpDistance)) { Vector3 dir = new Vector3(currentDir.x, currentDir.y, 0); m_rigidbody.AddForce((Vector3.up * jumpForce) + (dir * inJumpSpeed), ForceMode.Impulse); isJumping = true; additionalForce = additionalJumpForce; soundsManager.PlayJump(); } if (Input.GetKey(KeyCode.Space) && isJumping) { m_rigidbody.AddForce(Vector3.up * additionalForce, ForceMode.Impulse); if (additionalForce >= decreasingJumpParameter) { additionalForce -= decreasingJumpParameter; } } if (Input.GetKeyUp(KeyCode.Space)) { additionalForce = additionalJumpForce; isJumping = false; } if (Input.GetKey(KeyCode.LeftArrow) && !CheckCollisionByRaycasting(Vector3.left)) { mesh.transform.eulerAngles = new Vector3(-90.0f, 0.0f, 0.0f); currentDir = Vector2.left; } else if (Input.GetKey(KeyCode.RightArrow) && !CheckCollisionByRaycasting(Vector3.right)) { mesh.transform.eulerAngles = new Vector3(-90.0f, 0.0f, 180.0f); currentDir = Vector2.right; } else { currentDir = Vector2.zero; } }