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); 
	}
}

}

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);
}