here is the code that doesnt seem to work…
#pragma strict
#pragma implicit
#pragma downcast
var controllableObjects : GameObject[];
var playerObject : GameObject;
var playerCamTrans : Transform;
var playerCamera : GameObject;
var targetObject : GameObject;
var targetCamera : GameObject;
var canUse = true;
var rayDepth = 3;
// Reticle
var drawReticle = true;
var crosshairTexture : Texture;
private var position : Rect;
private var objCamera : GameObject;
class ControlObjectManager extends MonoBehaviour
{
function Start ()
{
Debug.Log("Start : ");
// Add the 'Player'
playerObject = GameObject.FindGameObjectWithTag("Player");
Debug.Log("playerObject : " + playerObject);
playerCamera = playerObject.transform.FindChild("MainCamera").gameObject;
Debug.Log("playerCamera : " + playerCamera);
controllableObjects = GameObject.FindGameObjectsWithTag("ControllableObject");
// iterate through the array
for (var obj in controllableObjects)
{
if (obj.tag == "ControllableObject")
{
objCamera = obj.transform.FindChild("MainCamera").gameObject;
Debug.Log("Turning Off Camera : " + objCamera);
objCamera.camera.depth = 1;
objCamera.camera.active = false;
}
}
// Reticle
position = Rect((Screen.width - crosshairTexture.width) / 2,
(Screen.height - crosshairTexture.height) / 2,
crosshairTexture.width, crosshairTexture.height);
// Mouse Cursor
Screen.lockCursor = true;
}
function Update ()
{
if (canUse && Input.GetButtonDown("Use"))
{
Debug.Log("Use Activated !");
if (!targetObject)
{
var camX = playerCamera.camera.GetScreenWidth() / 2;
var camY = playerCamera.camera.GetScreenHeight() / 2;
Debug.Log("playerObject : " + playerObject);
Debug.Log("From Camera : " + playerCamera + " ... Attached to GameObject : " + playerCamera.transform.root);
var hit: RaycastHit;
var ray = playerCamera.camera.ScreenPointToRay (Vector3(camX, camY, rayDepth));
if (Physics.Raycast(ray, hit) && hit.collider != null && hit.collider.gameObject.tag == "ControlTrigger")
{
Debug.Log("GameObject : " + hit.collider.gameObject);
playerObject.SendMessage ("SetControllable", false);
playerCamera.camera.active = false;
//playerCamera.camera.depth = 1;
targetObject = hit.collider.gameObject.GetComponent(ControlTrigger).controlObject;
Debug.Log("Target Object : " + targetObject);
targetObject.SendMessage ("SetControllable", true);
targetCamera = targetObject.transform.FindChild("MainCamera").gameObject;
Debug.Log("Target Camera : " + targetCamera);
targetCamera.camera.active = true;
//targetCamera.camera.depth = 0;
}
else
{
Debug.Log("GameObject : " + hit.collider.gameObject);
targetObject = null;
}
}
else
{
playerObject.SendMessage ("SetControllable", true);
playerCamera.camera.active = true;
//playerCamera.camera.depth = 0;
targetObject.SendMessage ("SetControllable", false);
//targetCamera.camera.depth = 1;
targetCamera.camera.active = false;
}
}
}
function OnGUI()
{
// Draw Reticle
if(drawReticle)
{
GUI.DrawTexture(position, crosshairTexture);
}
}
}
error :
NullReferenceException
UnityEngine.Component.get_gameObject () (at C:/BuildAgent/work/7535de4ca26c26ac/Runtime/ExportGenerated/Editor/UnityEngineComponent.cs:170)
ControlObjectManager.Start () (at Assets/Assets/Scripts/ControlManager/ControlObjectManager.js:34)
added the rest of script....
– ravendevil67oh and yes, I double checked there is a MainCamera attached to Player...its got me stumped...
– ravendevil67What do your console logs show for playerobject and playercamera?
– iwaldropplayerObject comes up correct but the playerCamera is null Start : UnityEngine.Debug:Log(Object) ControlObjectManager:Start() (at Assets/Assets/Scripts/ControlManager/ControlObjectManager.js:27) playerObject : First Person Controller (UnityEngine.GameObject) UnityEngine.Debug:Log(Object) ControlObjectManager:Start() (at Assets/Assets/Scripts/ControlManager/ControlObjectManager.js:30) NullReferenceException ControlObjectManager.Start () (at Assets/Assets/Scripts/ControlManager/ControlObjectManager.js:32)
– ravendevil67