Object reference not set to an instance of an object

NullReferenceException: Object reference not set to an instance of an object
PlayerMovement.doDamage () (at Assets/Scripts/PlayerMovement.cs:31)
PlayerMovement.Update () (at Assets/Scripts/PlayerMovement.cs:16)

using UnityEngine;
using System.Collections;

public class PlayerMovement : MonoBehaviour {

	public Transform hitStart, hitEnd;

	public bool inContact = false;
	void Start () {

	}

	void Update () {
		Movement ();
		lineDrawing ();
		doDamage ();
	}

	void lineDrawing(){
		Debug.DrawLine (hitStart.position, hitEnd.position, Color.green);
		if (Physics2D.Linecast (hitStart.position, hitEnd.position, 1 << LayerMask.NameToLayer("Monster"))) {
			inContact = true;
		}
		else{
			inContact = false;
		}
	}

	void doDamage(){
		GameObject ghostGameobject = GameObject.Find("Ghost1");
		Ghost ghostController = ghostGameobject.GetComponent<Ghost>();
		if (Input.GetKeyDown (KeyCode.E)) {
			if(inContact == true){
				ghostController.health = ghostController.health - 5;
			}
		}
	}

	void Movement(){
		var playerDiagonalSpeed = 3f;
		var playerSpeed = 4f;

		if (Input.GetAxisRaw("Horizontal")>0 && Input.GetAxisRaw("Vertical")>0) {
			transform.Translate(Vector2.right * playerDiagonalSpeed * Time.deltaTime);
			transform.Translate(Vector2.up * playerDiagonalSpeed * Time.deltaTime);
			transform.eulerAngles = new Vector2(0,0);
		}
		else if (Input.GetAxisRaw("Horizontal")<0 && Input.GetAxisRaw("Vertical")>0) {
			transform.Translate(Vector2.right * playerDiagonalSpeed * Time.deltaTime);
			transform.Translate(Vector2.up * playerDiagonalSpeed * Time.deltaTime);
			transform.eulerAngles = new Vector2(0,180);
		}
		else if (Input.GetAxisRaw("Horizontal")>0 && Input.GetAxisRaw("Vertical")<0) {
			transform.Translate(Vector2.right * playerDiagonalSpeed * Time.deltaTime);
			transform.Translate(Vector3.down * playerDiagonalSpeed * Time.deltaTime);
			transform.eulerAngles = new Vector2(0,0);
		}
		else if (Input.GetAxisRaw("Horizontal")<0 && Input.GetAxisRaw("Vertical")<0) {
			transform.Translate(Vector2.right * playerDiagonalSpeed * Time.deltaTime);
			transform.Translate(Vector3.down * playerDiagonalSpeed * Time.deltaTime);
			transform.eulerAngles = new Vector2(0,180);
		}
		else if (Input.GetAxisRaw("Horizontal")>0) {
			transform.Translate(Vector2.right * playerSpeed * Time.deltaTime);
			transform.eulerAngles = new Vector2(0,0);
		}
		else if (Input.GetAxisRaw("Horizontal")<0) {
			transform.Translate(Vector2.right * playerSpeed * Time.deltaTime);
			transform.eulerAngles = new Vector2(0,180);
		}
		else if (Input.GetAxisRaw("Vertical")>0) {
			transform.Translate(Vector2.up * playerSpeed * Time.deltaTime);
		}
		else if (Input.GetAxisRaw("Vertical")<0) {
			transform.Translate(Vector3.down * playerSpeed * Time.deltaTime);
		}
	}
}

The game is looking for an object named “Ghost1” but it can’t find it. Make sure that you have an object named “Ghost1” in the hierarchy and that it is enabled.

Also, is your GetComponent a script named ghost or what?

An object you think is automagically found is not.
This is occurring in your doDamage Method.

Put some debug log statements in there to see what is returning null(thought it should be the look up for the Ghost comp). We don’t know the structure of your game objects, but it can’t find typeof Ghost.

        GameObject ghostGameobject = GameObject.Find("Ghost1");
        if (ghostGameobject == null)
            Debug.Log("GameObject named Ghost1 was not found");
        else
            Debug.Log("GameObject named Ghost1 was found without issues");

        Ghost ghostController = ghostGameobject.GetComponent<Ghost>(); // <---- Should be right here.

        if (ghostController == null)
            Debug.Log("Component on Ghost 1 Type of Ghost was not found");
        else
            Debug.Log("Component on Ghost 1 Type of Ghost was found without issues");

        if (Input.GetKeyDown (KeyCode.E)) {
            if(inContact == true){
                ghostController.health = ghostController.health - 5;
            }
        }