I have a section of code that i want to disable the mouse script when the button I is pressed. I know there is a better way to do it, such as making a variable for GUI and a funciton such as showGUI = !showGUI, but im not 100% sure on how to set that up with disabling all the moving scripts.
I am using the old MouseLook and Character controller script because i despise the new one. I also think these are easier to work with.
Errors:
NullReferenceException: Object reference not set to an instance of an object
Inventory.Update () (at Assets/Scripts/Inventory.js:92)
NullReferenceException: Object reference not set to an instance of an object
Inventory.Update () (at Assets/Scripts/Inventory.js:82)
Section of code line 5=line 82 (It had no problem on the one directly after)
if(showGUI == true)
{
Time.timeScale = 0;
GameObject.Find("First Person Controller").GetComponent(FPSInputController).enabled = false;
GameObject.Find("First Person Controller").GetComponent(MouseLook).enabled = false;
GameObject.Find("Main Camera").GetComponent(MouseLook).enabled = false;
GameObject.Find("Arms05").GetComponent(PlayerControl).enabled = false;
GameObject.Find("Main Camera").GetComponent(RayCastChop).enabled = false;
}
if(showGUI == false)
{
Time.timeScale = 1;
GameObject.Find("First Person Controller").GetComponent(FPSInputController).enabled = true;
GameObject.Find("First Person Controller").GetComponent(MouseLook).enabled = true;
GameObject.Find("Main Camera").GetComponent(MouseLook).enabled = true;
GameObject.Find("Arms05").GetComponent(PlayerControl).enabled = true;
GameObject.Find("Main Camera").GetComponent(RayCastChop).enabled = true;
}
}
Boggs
June 30, 2015, 10:59pm
2
The only way I got it to work was to modify the MouseLook.CS script by adding 2 ifStatements to the X & Y Sensitivity floats to “0” and 2 ifStatements to return value back to “2”. Hope this helps if someone has a better way plz share.
using System;
using UnityEngine;
using UnityStandardAssets.CrossPlatformInput;
namespace UnityStandardAssets.Characters.FirstPerson
{
[Serializable]
public class MouseLook
{
public float XSensitivity = 2f;
public float YSensitivity = 2f;
public bool clampVerticalRotation = true;
public float MinimumX = -90F;
public float MaximumX = 90F;
public bool smooth;
public float smoothTime = 5f;
private Quaternion m_CharacterTargetRot;
private Quaternion m_CameraTargetRot;
public void Init(Transform character, Transform camera)
{
m_CharacterTargetRot = character.localRotation;
m_CameraTargetRot = camera.localRotation;
}
public void LookRotation(Transform character, Transform camera)
{
float yRot = CrossPlatformInputManager.GetAxis ("Mouse X") * XSensitivity;
float xRot = CrossPlatformInputManager.GetAxis ("Mouse Y") * YSensitivity;
m_CharacterTargetRot *= Quaternion.Euler (0f, yRot, 0f);
m_CameraTargetRot *= Quaternion.Euler (-xRot, 0f, 0f);
if (Input.GetMouseButtonDown (2))
Debug.Log (YSensitivity = 0f);
if (Input.GetMouseButtonDown (2))
Debug.Log (XSensitivity = 0f);
if (Input.GetMouseButtonDown (1))
Debug.Log(YSensitivity = 2f);
if (Input.GetMouseButtonDown (1))
Debug.Log(XSensitivity = 2f);
if (clampVerticalRotation)
m_CameraTargetRot = ClampRotationAroundXAxis (m_CameraTargetRot);
if(smooth)
{
character.localRotation = Quaternion.Slerp (character.localRotation, m_CharacterTargetRot,
smoothTime * Time.deltaTime);
camera.localRotation = Quaternion.Slerp (camera.localRotation, m_CameraTargetRot,
smoothTime * Time.deltaTime);
}
else
{
character.localRotation = m_CharacterTargetRot;
camera.localRotation = m_CameraTargetRot;
}
}
Quaternion ClampRotationAroundXAxis(Quaternion q)
{
q.x /= q.w;
q.y /= q.w;
q.z /= q.w;
q.w = 1.0f;
float angleX = 2.0f * Mathf.Rad2Deg * Mathf.Atan (q.x);
angleX = Mathf.Clamp (angleX, MinimumX, MaximumX);
q.x = Mathf.Tan (0.5f * Mathf.Deg2Rad * angleX);
return q;
}
}
}
Hi, are you using unity4 First Person Character controllers inside Unity5?
If so, just move the Unity4 character controller in to the “Standard Assets” folder where the Unity 5 controller lives.
Then MouseLook is working without needing to hack the Mouselook.CS
hope that helps.
-original answer by @SG|Gamer