I literally started with unity yesterday, and I found myself on the tracks of making a movement-oriented 3d platform through the help of various yt tutorials. This is my jump code, (probably copied character for character):` private void Jump()
{
if (grounded)
{
readyToJump = false;
//Add jump forces
rb.AddForce(Vector2.up * jumpForce * 1.5f);
rb.AddForce(normalVector * jumpForce * 0.5f);
//If jumping while falling, reset y velocity.
Vector3 vel = rb.velocity;
if (rb.velocity.y < 0.5f)
rb.velocity = new Vector3(vel.x, 0, vel.z);
else if (rb.velocity.y > 0)
rb.velocity = new Vector3(vel.x, vel.y / 2, vel.z);
Invoke(nameof(ResetJump), jumpCooldown);
}
if (!grounded)
{
readyToJump = false;
//Add jump forces
rb.AddForce(orientation.forward * jumpForce * 1f);
rb.AddForce(Vector2.up * jumpForce * 1.5f);
rb.AddForce(normalVector * jumpForce * 0.5f);
//Reset Velocity
rb.velocity = Vector3.zero;
//Disable dashForceCounter if doublejumping while dashing
allowDashForceCounter = false;
Invoke(nameof(ResetJump), jumpCooldown);
}
//Walljump
if (isWallRunning)
{
readyToJump = false;
//normal jump
if (isWallLeft && !Input.GetKey(KeyCode.D) || isWallRight && !Input.GetKey(KeyCode.A))
{
rb.AddForce(Vector2.up * jumpForce * 1.5f);
rb.AddForce(normalVector * jumpForce * 0.5f);
}
//sidwards wallhop
if (isWallRight || isWallLeft && Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.D)) rb.AddForce(-orientation.up * jumpForce * 1f);
if (isWallRight && Input.GetKey(KeyCode.A)) rb.AddForce(-orientation.right * jumpForce * 3.2f);
if (isWallLeft && Input.GetKey(KeyCode.D)) rb.AddForce(orientation.right * jumpForce * 3.2f);
//Always add forward force
rb.AddForce(orientation.forward * jumpForce * 1f);
//Disable dashForceCounter if doublejumping while dashing
allowDashForceCounter = false;
Invoke(nameof(ResetJump), jumpCooldown);
}
}
private void ResetJump()
{
readyToJump = true;
}`
Keep in mind i could never write this on my own, so if you do know a solution, a code example, or a really good explanation would be apreciated.