How control Rigidbody2d using GetAxis with AddForce and angularVelocity (2D)
So I'm new to unity as well as coding; I've been stuck with this problem for quite a while. I've been using this standard player controller and it works pretty dandy.
void FixedUpdate ()
{
if(Input.GetKey (KeyCode.W))
rb.AddForce (transform.up * maxSpeed);
if (Input.GetKey (KeyCode.A))
rb.angularVelocity = maxRotation;
if (Input.GetKey (KeyCode.D))
rb.angularVelocity = -maxRotation;
}
I'm now trying to control my player using a joypad and I'm making an attempt to use GetAxis to smooth out the controls. I want to continue using addforce and angularvelocity as I want my player to continue interacting with other rigidbodies. I get no errors but nothing seems to be moving, and I can't seem to get it to move.
using UnityEngine;
using System.Collections;
public class Player2Controller : MonoBehaviour {
public float maxSpeed = 4f;
public float maxRotation = 100f;
private Rigidbody2D rb;
void Start ()
{
rb = GetComponent<Rigidbody2D> ();
}
void FixedUpdate ()
{
float y = Input.GetAxis ("vertical");
float x = Input.GetAxis ("horizontal");
rb.angularVelocity = x * maxRotation;
rb.AddForce (transform.up * y * maxSpeed);
}
}
I do hope the information given is sufficient and any help would be greatly appreciated! :)
Answer by Laun_MC · Jan 04, 2017 at 11:37 AM
I think you need to write name of axis with Uppercase. Try this:
Vector2 movingVector = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
rb.angularVelocity = movingVector.x * maxRotation;
rb.AddForce(transform.up * movingVector.y * maxSpeed);
Worked like a charm! Thanks a ton! $$anonymous$$y character is moving backwards (can't seem to change the transform.up to transform.down), but I'll figure that one out along the way!
Your answer
Follow this Question
Related Questions
AddRelativeTorque and gameobject's angularVelocity 1 Answer
Trying to add force to an object... is this done correctly? 0 Answers
Addforce for 2d game is not doing anything. 0 Answers
Predicting max jump height of a force impulse 1 Answer
plz I need a script of diagonal moving for rigidbody 2d 0 Answers