rigidbody2D addforce on x-axis
Hi there, I am trying to wall jumping into my 2d platformer. I have managed to code it so that a certain command will run when next to wall while in the air but it does not apply the force x-axis correctly.
         if(Walled && Input.GetButtonDown("Jump") && !Grounded && facingRight)
         {
             rigidbody2D.AddForce(new Vector2(-600, 600));
             Debug.Log("Right Jump");
         }
         if(Walled && Input.GetButtonDown("Jump") && !Grounded && !facingRight)
         {
             rigidbody2D.AddForce(new Vector2(600, 600));
             Debug.Log("Left Jump");
It has no problem applying the upwards force but only moves enough on the x-axis to no longer be Walled. I think it might be because it is no longer applying the force as it is no longer next to a wall but I am unsure if this is right or how to fix it.
Whole Script:
 using UnityEngine;
 using System.Collections;
 
 public class PlayerController : MonoBehaviour 
 {
     [HideInInspector]
     public bool facingRight = true;
     public float maxSpeed = 10f; 
     public float jumpForce = 700f;    
     public Transform groundCheck;
     public Transform wallCheck;
     public LayerMask whatIsGround;
     public float groundRadius = 0.2f;
     bool Grounded = false;
     bool Walled = false;
     Animator anim;
 
     void Start () 
     {
         anim = GetComponent<Animator>();
     }
 
     void FixedUpdate () 
     {
         Grounded = Physics2D.OverlapCircle (groundCheck.position, groundRadius, whatIsGround);
         anim.SetBool ("Ground", Grounded);
         Walled = Physics2D.OverlapCircle (wallCheck.position, 0.1f, whatIsGround);
         anim.SetBool ("Walled", Walled);
 
         float move = Input.GetAxis ("Horizontal");
 
         anim.SetFloat ("Speed", Mathf.Abs(move));
 
         rigidbody2D.velocity = new Vector2 (move * maxSpeed, rigidbody2D.velocity.y);
 
         if(move > 0 &&!facingRight)
             Flip ();
         else if(move < 0 && facingRight)
             Flip ();
     }
 
     void Update()
     {
         if(Grounded && Input.GetButtonDown("Jump"))
         {
             anim.SetBool ("Ground", false);
             rigidbody2D.AddForce(new Vector2(0, jumpForce));
         }
         if(Walled && Input.GetButtonDown("Jump") && !Grounded && facingRight)
         {
             rigidbody2D.AddForce(new Vector2(-600, 600));
             Debug.Log("Right Jump");
         }
         if(Walled && Input.GetButtonDown("Jump") && !Grounded && !facingRight)
         {
             rigidbody2D.AddForce(new Vector2(600, 600));
             Debug.Log("Left Jump");
         }
     }
 
     void Flip()
     {
         facingRight = !facingRight;
         Vector3 TheScale = transform.localScale;
         TheScale.x *= -1;
         transform.localScale = TheScale;
     }
 }
 
Thanks in advance!
Answer by goryfigment · Mar 31, 2016 at 10:02 AM
just change the jumpforce to the x axis of the vector.
 rigidbody2D.AddForce(new Vector2(jumpForce, 0));
against the wall you can try to add a specific force from the x and y axis:
 rigidbody2D.AddForce(new Vector2(jumpForce, jumpForce));
Your answer
 
 
             Follow this Question
Related Questions
Predicting max jump height of a force impulse 1 Answer
Jump Ability in my first game (2d platformer) 1 Answer
Rigidbody2D AddForce Impulse not working on X axis 5 Answers
How do I ignore gravity when using Rigidbody and always have the same jump force? 1 Answer
Confused about how AddForce works 1 Answer
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                