Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by TonyasDev · Feb 28 at 02:22 PM · walljump

How to fix walljumping from the same wall

Hey, i'm new to Unity and i have started doing a 2D platformer. I wanted to add a walljump mechanic, and everything worked fine, but instead of jumping form one wall to the second, the player could just kind of slide up the wall. Does someone know how to prevent this and only let the player walljump as intended? Thanks, here's my code.

using UnityEngine;

public class PlayerMovementScript : MonoBehaviour { [Header("Object References")] public Rigidbody2D rb;

 [Header("Horizontal Movement")]
 public float moveSpeed = 10f;

 [Header("Vertical Movement")]
 public float jumpForce = 10f;

 [Header("Grounded")]
 public Transform groundCheck;
 public LayerMask groundLayer;
 public float groundRadius = 0.2f;
 bool isGrounded = false;

 [Header("Wall Jump")]
 public float wallJumpTime = 0.2f;
 public float wallSlideSpeed = 0.3f;
 public float wallDistance = 0.5f;
 bool isWallSliding = false;
 RaycastHit2D WallCheckHit;
 float jumpTime;

 float mx = 0f;
 bool isFacingRight = true;

 void Update()
 {
     if (isGrounded && Input.GetButtonDown("Jump") || isWallSliding && Input.GetButtonDown("Jump"))
     {
         Jump();
     }
 }

 void FixedUpdate() 
 {
     mx = Input.GetAxis("Horizontal");

     if (mx < 0)
     {
         isFacingRight = false;
         transform.localScale = new Vector2(-1, transform.localScale.y);
     }
     else
     {
         isFacingRight = true;
         transform.localScale = new Vector2(1, transform.localScale.y);
     }

     rb.velocity = new Vector2(mx * moveSpeed, rb.velocity.y);

     bool touchingGround = Physics2D.OverlapCircle(groundCheck.position, groundRadius, groundLayer);

     if (touchingGround)
     {
         isGrounded = true;
         jumpTime = Time.time + wallJumpTime;
     }
     else if (jumpTime < Time.time)
     {
         isGrounded = false;
     }

     if (isFacingRight)
     {
         WallCheckHit = Physics2D.Raycast(transform.position, new Vector2(wallDistance, 0), wallDistance, groundLayer);           
     }
     else
     {
         WallCheckHit = Physics2D.Raycast(transform.position, new Vector2(-wallDistance, 0), wallDistance, groundLayer);

     }

     if (WallCheckHit && !isGrounded && mx != 0)
     {
         isWallSliding = true;
         jumpTime = Time.time + wallJumpTime;
     }
     else if (jumpTime < Time.time)
     {
         isWallSliding = false;
     }

     if (isWallSliding)
     {
         rb.velocity = new Vector2(rb.velocity.x, Mathf.Clamp(rb.velocity.y, wallSlideSpeed, float.MaxValue));
     }
 }

 void Jump()
 {
     rb.velocity = new Vector2(rb.velocity.x, jumpForce);
 }

}

I'm sorry if it's messy, like i said, i'm new to Unity ( I've started like a week ago and i'm trying to do most of the things by myself ).

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

175 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

I can not get my character to crouch? Character not sliding on walls? 0 Answers

How to move upward with wall jump and not be pulled down too quickly? 0 Answers

I have a walljump script but the walljump doesn't work right can someone help me? 0 Answers

Help with walljump/ wallstick script!,Help with walljump/ wallstick script! 0 Answers

How can my wallrun script double wallrun ? 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges