Accessing C# from Javascript?

Alrighty, so I am screwing around with the First Person Controller to make it more of a third person-ish theme, imagine the camera angle in The Last of Us. Anyway, I’ve got it working great right now, but I decided to switch out the CharacterMotor.js for another script I came across, which I named PlayerController.cs

Here is the script, but you probably won’t need to look at it to figure out what the problem is, as this is not the script the error is coming from:

    using UnityEngine;
    using System.Collections;
    
    public class PlayerController : MonoBehaviour {
    	public float speed = 6.0F;
    	public float jumpSpeed = 8.0F;
    	public float rotSpeed = 90.0f; // turn at 90 degrees/second
    	public float gravity = 20.0F;
    	private Vector3 moveDirection = Vector3.zero;
    	void Update() {
    		// rotate character with Horizontal keys:
    		transform.Rotate(0, Input.GetAxis("Horizontal") * rotSpeed * Time.deltaTime, 0);
    		CharacterController controller = GetComponent<CharacterController>();
    		if (controller.isGrounded) {
    			moveDirection = new Vector3(0, 0, Input.GetAxis("Vertical"));
    			moveDirection = transform.TransformDirection(moveDirection);
    			moveDirection *= speed;
    			if (Input.GetButton("Jump")){
    				moveDirection.y = jumpSpeed;
    			}
    		}
    		moveDirection.y -= gravity * Time.deltaTime;
    		controller.Move(moveDirection * Time.deltaTime);
    	}
    }

So now the problem I face is that the FPSInputController.js can’t read it. Here is the FPSInputController script:

private var motor : PlayerController;

// Use this for initialization
function Awake () {
	motor = GetComponent(PlayerController);
}

// Update is called once per frame
function Update () {
	// Get the input vector from kayboard or analog stick
	var directionVector = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
	
	if (directionVector != Vector3.zero) {
		// Get the length of the directon vector and then normalize it
		// Dividing by the length is cheaper than normalizing when we already have the length anyway
		var directionLength = directionVector.magnitude;
		directionVector = directionVector / directionLength;
		
		// Make sure the length is no bigger than 1
		directionLength = Mathf.Min(1, directionLength);
		
		// Make the input vector more sensitive towards the extremes and less sensitive in the middle
		// This makes it easier to control slow speeds when using analog sticks
		directionLength = directionLength * directionLength;
		
		// Multiply the normalized direction vector by the modified length
		directionVector = directionVector * directionLength;
	}
	
	// Apply the direction to the CharacterMotor
	motor.inputMoveDirection = transform.rotation * directionVector;
	motor.inputJump = Input.GetButton("Jump");
}

// Require a character controller to be attached to the same game object
@script RequireComponent (CharacterMotor)
@script AddComponentMenu ("Character/FPS Input Controller")

As you can see, I changed out parts in FPSInputController to make it access PlayerController.cs instead of CharacterMotor.js, but it gives me this error:

Assets/Standard Assets/Character Controllers/Sources/Scripts/FPSInputController.js(1,21): BCE0018: The name ‘PlayerController’ does not denote a valid type (‘not found’).

And it’s pointing to the first line:

private var motor : PlayerController;

So, I am pretty sure the problem is that that isn’t the correct way to call a C# script from a Javascript. What’s the best way to go about solving this issue? I know this is a long question so lots of thanks to anybody who takes the time to help me.

Set the script compilation order to ensure classes have been compiled before you try to reference them : Unity - Manual: Special folders and script compilation order

Figured it out. I got sick of trying to make the scripts compatible, so I just went and found two other compatible C# scripts.

http://forum.unity3d.com/threads/93527-FPSInputController-and-CharacterMotor-in-Csharp