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

Use rigidbody.AddForce(movement);

3 Answers

3

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.

Line 36. The other answer looks up the rigidbody, then uses it. Here, line 36 does the same thing, just combined into look+use in one command (which is more complicated to read and runs a bit slower, but still might help someone understand it.)