Cannot implicitly convert type 'float' to 'bool'

Okay, so I am trying to make it so that if the character is moving, play the ‘run’ animation, if he is not moving the ‘idle’ animation. This is my script:

using UnityEngine;
using System.Collections;

public class FPSInputConC : MonoBehaviour {

	    public float speed = 200;
					public float jumpSpeed = 100;
								public Vector3 MoveDirection =;
										public float gravity  = 90;
												public bool grounded = false;
														public bool moving = false;
	// Update is called once per frame
	void Update ()
		if (grounded) {
			MoveDirection = new Vector3 (Input.GetAxis ("Horizontal"), 0, Input.GetAxis ("Vertical"));
			MoveDirection = transform.TransformDirection (MoveDirection);
			MoveDirection *= speed;
		if  (moving == true){

			   MoveDirection.y = jumpSpeed;

			if(MoveDirection[0] = 0){
				moving = true;


		MoveDirection.y -= gravity * Time.deltaTime;
					var Controller = GetComponent<CharacterController>();
								var flags = Controller.Move(MoveDirection * Time.deltaTime);
												grounded = (flags & CollisionFlags.CollidedBelow) !=0;

The error is at line 45, this script is a modified version of another. Please, if anyone has the time, help. Thank you!

if(MoveDirection[0] = 0){
moving = true;

This line will be an issue. You are using the assignment operator (=), instead of comparison (==).

Long term you can get into the habit of putting constants first in comparisons.

if( 0 == MoveDirection[0] )

That way if you accidentally use the assignment operator it will give you a compiler error since it is illegal to try and assign a value to “0”.

Your problem is here:
if(MoveDirection[0] = 0)

MoveDirection[0] = 0 assigns the value 0 to MoveDirection[0], it is NOT a comparision with a bool as a result.

What you want is “if(MoveDirection[0] == 0)”

I think your issue is here.

>   grounded = (flags & CollisionFlags.CollidedBelow) !=0;

Your error message “Cannot implicitly convert type ‘float’ to ‘bool’” is saying your trying to convert a boolean (true/false) into a float (number). Up top you declared grounded as false, and later your checking it against a number, which it can’t do. Change that. I think.