- Home /
Rb2d.addForce is changing my y value
I'm trying to make it so i can run and jump at the same time, but for some reason my character lifts up as he runs. IN addition some of my animations are playing delayed. using UnityEngine; using System.Collections;
public class playerController : MonoBehaviour {
public int speed = 3;
private Animator playerAnimator;
private float distanceToGround;
private bool isGrounded = true;
private Rigidbody2D rb;
// Use this for initialization
void Start () {
playerAnimator = GetComponent<Animator>();
rb = gameObject.GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update () {
//Debug.Log(playerAnimator.Get);
if(Input.GetKey(KeyCode.D))
{
Vector2 move = new Vector2(speed*5, 0);
Debug.Log("isMoving");
playerAnimator.SetBool("isMoving", true);
rb.AddForce(move);
}
else if(Input.GetKey(KeyCode.A))
{
Vector2 move = new Vector2(-speed*5, 0);
Debug.Log("isMoving");
playerAnimator.SetBool("isMoving", true);
rb.AddForce(move);
}
else if(isGrounded && Input.GetKeyDown(KeyCode.Space))
{
Vector2 move = new Vector3(0, 300);
Debug.Log("Jumping");
playerAnimator.SetBool("isJumping",true);
gameObject.GetComponent<Rigidbody2D>().AddForce(move);
}
else if(!isGrounded && rb.velocity.y < 0)
{
Debug.Log("Falling");
playerAnimator.SetBool("isJumping",false);
playerAnimator.SetBool("isFalling", true);
}
else
{
//playerAnimator.SetBool("isJumping",false);
playerAnimator.SetBool("isFalling", false);
playerAnimator.SetBool("isMoving", false);
}
}
void OnCollisionEnter2D(Collision2D other)
{
Debug.Log("Grounded");
isGrounded = true;
}
void OnCollisionExit2D(Collision2D other)
{
Debug.Log("unGrounded");
isGrounded = false;
}
}
Answer by MitchWardle180 · Jun 04, 2015 at 08:08 AM
It's because you are using Vector2 when you should use Vector3. Vector2 is only the X and Y axis and you need to use Vector3 to get the Z Axis
Also I wouldn't use such a big IF statement with so many Else's, if I was you I would create functions to do the same things have a look at the link at the bottom, it may help you
http://docs.unity3d.com/ScriptReference/CharacterController.Move.html
Your answer
![](https://koobas.hobune.stream/wayback/20220613200555im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Move Object With Angle In 2D 1 Answer
newbie 2d simple sprite rotation 1 Answer
2d Platform Controller Face Help 1 Answer
Switching Cameras at runtime 1 Answer
My game frozzes when I use a while to check if there's colision 2 Answers