Question by
zukeru · Sep 24, 2019 at 11:16 PM ·
c#unity 5scripting problem
MFPS MouseLook Issue, Namespace or Directive not found after Gaia import!
I am using MFPS and Gaia. I imported Gaia and built a terrain. When I look at my console errors after importing Gaia I get:
Assets\MFPS\Scripts\Player\bl_FirstPersonController.cs(37,13): error CS0246: The type or namespace name 'MouseLook' could not be found (are you missing a using directive or an assembly reference?)
However before it was work. I think Gaia did something to override the way MFPS was doing the MouseLook namespace. However, when I go look at the code it looks like its modifying the standard asset for first person controller by unity MouseLook, but if I do the full import it doesn't use the modified class only the default one.
I'm not sure what Gaia did to mess it up.
Here is the first person controller script that references mouse look, the top part of it.
using UnityEngine;
using UnityStandardAssets.Utility;
using Random = UnityEngine.Random;
using System.Collections;
[RequireComponent(typeof(CharacterController))]
[RequireComponent(typeof(AudioSource))]
public class bl_FirstPersonController : bl_MonoBehaviour
{
[Header("Settings")]
public PlayerState State;
public float WalkSpeed = 4.5f;
[SerializeField]
private float m_RunSpeed = 8;
[SerializeField]
private float m_CrouchSpeed;
[SerializeField]
private float m_ClimbSpeed = 1f;
[SerializeField]
private float m_JumpSpeed;
[SerializeField, Range(0, 2)] private float JumpMinRate = 0.82f;
[SerializeField, Range(0, 2)] private float AirControlMultiplier = 0.8f;
[SerializeField]
private float m_StickToGroundForce;
[SerializeField]
private float m_GravityMultiplier;
public bool RunFovEffect = true;
public bool KeepToCrouch = true;
[Header("Falling")]
public bool FallDamage = true;
[Range(0.1f, 5f), SerializeField]
private float SafeFallDistance = 3;
[Range(3, 25), SerializeField]
private float DeathFallDistance = 15;
[Header("Mouse Look")]
[SerializeField]
private MouseLook m_MouseLook;
Here is the mouse look script.
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;
public bool lockCursor = true;
private Quaternion m_CharacterTargetRot;
private Quaternion m_CameraTargetRot;
private bool m_cursorIsLocked = true;
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(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;
}
UpdateCursorLock();
}
public void SetCursorLock(bool value)
{
lockCursor = value;
if(!lockCursor)
{//we force unlock the cursor if the user disable the cursor locking helper
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
}
}
public void UpdateCursorLock()
{
//if the user set "lockCursor" we check & properly lock the cursos
if (lockCursor)
InternalLockUpdate();
}
private void InternalLockUpdate()
{
if(Input.GetKeyUp(KeyCode.Escape))
{
m_cursorIsLocked = false;
}
else if(Input.GetMouseButtonUp(0))
{
m_cursorIsLocked = true;
}
if (m_cursorIsLocked)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
else if (!m_cursorIsLocked)
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = true;
}
}
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;
}
}
}
any help is appriciated.
Comment