Why is rigidbody.AddForce not working?

Hi,

I am new to Unity Development and I was working on Roll a ball tutorial when I encountered during the scripting phase.Whenever I type rigidbody.AddForce,it puts the AddForce in red letters and it shows me

Error CS0117:UnityEngine.Component does not contain a definition for ‘AddForce’”.

Also,at the same time I keep getting the message to update the API but if I comment out that piece of code,it goes away.I have attached pictures of both the problems and I appreciate any help or suggestion regarding the solution.Thanks!

42965-script-problem.png

42966-obsoleteapi-message.png

I take it your using unity 5.

When you get that little pop up screen it basically means the some of the wording/code that was used in earlier version scripts no longer exists in unity 5. Just click the “I made a backup…” button and unity will auto correct for you.

:wink:

Does your script have a rigidbody variable?

Have you referenced it if it exists?

private RigidBody3D rigidbody;
void Start()
{
  rigidbody = GetComponent<RigidBody3D>();
}

if not, you need to get the component if the component(RigidBody3d) exists on the same gameobject that the script you have your FixedUpdate exists on.

void FixedUpdate()
{
  RigidBody3D rigidbody = GetComponent<RigidBody3D>();

  // your other code

  rigidbody.AddForce(new Vector3(0,0,0)); // set your values here, or provide another vector3 types from another object.
}

The variable(what ever you use) that you’re using must be a RigidBody3D/2D type and have a reference to a RigidBody.

I just made the problem disappear by writing the code attached, i.e. the errormessage disappeared.