2D Top-Down Character: How to make my character move using physics?
Hi guys,
I've been trying to make my character move using add force and rigidbody, but I'm still quite new to Unity. It's a 2D top-down character.
Thank you very much for the help.
There's only one error I keep getting and I don't know how to fix it;
Assets/Scripts/PlayerMovement2.cs(24,37): error CS0120: An object reference is required to access non-static member `UnityEngine.Rigidbody2D.AddForce(UnityEngine.Vector2, UnityEngine.ForceMode2D)'
using UnityEngine; using System.Collections;
public class PlayerMovement2 : MonoBehaviour {
public float speed;
// Update is called once per frame
void Update () {
if (Input.GetKey (KeyCode.D)) {
Rigidbody2D.AddForce (Vector2.right * speed);
}
if (Input.GetKey (KeyCode.A)) {
Rigidbody2D.AddForce (Vector2.left * speed);
}
if (Input.GetKey (KeyCode.W)) {
Rigidbody2D.AddForce (Vector2.up * speed);
}
if (Input.GetKey (KeyCode.S)) {
Rigidbody2D.AddForce (Vector2.right * speed);
}
}
}
Answer by Ali-hatem · Mar 19, 2016 at 04:53 PM
rigidbody2D
with small r not Rigidbody2D
. & this is a better way if as i see you use old version of unity :
public float speed;
float h;
float v;
void Update()
{
h = Input.GetAxis ("Horizontal");
v = Input.GetAxis ("Vertical");
rigidbody2D.velocity = new Vector2 (h*speed,v*speed);
}
if new version of unity :
Rigidbody2D rgb;
public float speed;
float h;
float v;
void Start()
{
rgb = GetComponent<Rigidbody2D> ();
}
void Update()
{
h = Input.GetAxis ("Horizontal");
v = Input.GetAxis ("Vertical");
rgb.velocity = new Vector2 (h*speed,v*speed);
}
Your answer
Follow this Question
Related Questions
How to stop the character moving after the button is pressed, using Rigidbody2D()..AddForce? 1 Answer
Limiting backwards speed 0 Answers
Unable to AddForce on a game object containing a RigidBody2D and a HingeJoint2D? 1 Answer
Trying to add force to an object... is this done correctly? 0 Answers
2D : How to overwrite rigidbody velocity when "skill" input pressed ??? 0 Answers