GetComponet() returning null with require component script

Hi! I take the ThirdPersonUserControl script and change a few lines to move the player through websocket. The problem is that it keeps returing null when I get the ThirdPersonCharacter. That should NOT happen since I add the require typeof before the class.

using UnityEngine;
using System.Collections;
using LitJson;
using UnityStandardAssets.CrossPlatformInput;
using UnityStandardAssets.Characters.ThirdPerson;

[RequireComponent (typeof (ThirdPersonCharacter))]
public class WebSocketInputController : MonoBehaviour {

    private ThirdPersonCharacter m_Character; // A reference to the ThirdPersonCharacter on the object
    private Transform m_Cam;                  // A reference to the main camera in the scenes transform
    private Vector3 m_CamForward;             // The current forward direction of the camera
    private Vector3 m_Move;                   // the world-relative desired move direction, calculated from the camForward and user input.


    // Use this for initialization
    void Start () {
        // get the transform of the main camera
        if (Camera.main != null) {
            m_Cam = Camera.main.transform;
        } else {
            Debug.LogWarning (
                "Warning: no main camera found. Third person character needs a Camera tagged \"MainCamera\", for camera-relative controls.");
            // we use self-relative controls in this case, which probably isn't what the user wants, but hey, we warned them!
        }

        // get the third person character ( this should never be null due to require component )
        m_Character = GetComponent<ThirdPersonCharacter> ();
        if (m_Character == null) {
            Debug.LogError("Dude! It's not getting the component!");
        }
        NotificationCenter.DefaultCenter().AddObserver(this, "Move");
    }
	
	// Update is called once per frame
	void Update () {
	    Vector2 move = new Vector2(
            CrossPlatformInputManager.GetAxis ("Horizontal"),
            CrossPlatformInputManager.GetAxis("Vertical")
	        );
	    if (move != Vector2.zero) {
            Debug.Log(JsonMapper.ToJson(move));
            GameManager.Instance.WebSocket.SendUTF8 (JsonMapper.ToJson (move));
            NotificationCenter.DefaultCenter().PostNotification(this, "Move", move);
        }
    }

    private void Move(Notification notification) {
        Vector2 move = (Vector2) notification.data;

        // calculate move direction to pass to character
        if (m_Cam != null) {
            // calculate camera relative direction to move:
            m_CamForward = Vector3.Scale (m_Cam.forward, new Vector3 (1, 0, 1)).normalized;
            m_Move = move.y * m_CamForward + move.x * m_Cam.right;
        } else {
            // we use world-relative directions in the case of no main camera
            m_Move = move.y * Vector3.forward + move.x * Vector3.right;
        }

        // pass all parameters to the character control script
        m_Character.Move (m_Move, false, false);
    }

}

There is the entire class. Thanks in advance!

PS: I remove the crunch and jump cause I don’t need them. Just need the player to move arround.

I solve it. I don’t have two clases named ThridPersonCharacter, but I did have the script added to two objects. Also, the second object did not respond to the “RequireComponent”. I asume that I add ir before I code the “RequireComponent”.

Sorry for that. Thanks anyway!