Упростил код но все равно поворот не хочет устанавливаться, он мелькнет на пару долесекунд и сброситься. Перемещение камеры работает хорошо.
using UnityEngine;
using System.Collections;
public class GlVar : MonoBehaviour
{
public GameObject Camera; // единственная камера на сцене
public bool iClient; //выставляются в другом скрипте правильно
public bool iServ;
void Update()
{
if ((Input.GetAxis("Vertical") != 0 || Input.GetAxis("Horizontal") != 0
|| Input.GetAxis("Mouse X") != 0 || Input.GetAxis("Mouse Y") != 0))
{
SetPos();
}
}
public void SetPos()
{
Vector3 p = Camera.transform.position;
Vector3 r = Camera.transform.eulerAngles;
if (iClient)// я клиент
this.GetComponent<NetworkView>().RPC("SetKey", RPCMode.Server, p, r);
if (iServ) // я сервер
this.GetComponent<NetworkView>().RPC("SetKey", RPCMode.Others, p, r);
}
[RPC]
void SetKey(Vector3 pos, Vector3 r)
{
// Движения мыши -> Вращение камеры
Camera.transform.eulerAngles = r;
// перемещение камеры
Camera.transform.position = pos;
}
}
Сбрасывает скрипт управления камерой
using UnityEngine;
using System.Collections;
//using UnityEngine.Networking;
public class Polet : MonoBehaviour
{
public float mouseSensitivity = 3.0f;
public float speed = 2.0f;
private Vector3 transfer;
private GameObject globalvar;
public float minimumX = -360F;
public float maximumX = 360F;
public float minimumY = -60F;
public float maximumY = 60F;
float rotationX = 0F;
float rotationY = 0F;
Quaternion originalRotation;
public float X;
void Awake()
{
GetComponent<Camera>().orthographic = false;
}
void Start()
{
originalRotation = transform.rotation;
globalvar = GameObject.Find("GV");
}
void Update()
{
// Движения мыши -> Вращение камеры
rotationX += Input.GetAxis("Mouse X") * mouseSensitivity;
rotationY += Input.GetAxis("Mouse Y") * mouseSensitivity;
rotationX = ClampAngle(rotationX, minimumX, maximumX);
rotationY = ClampAngle(rotationY, minimumY, maximumY);
Quaternion xQuaternion = Quaternion.AngleAxis(rotationX, Vector3.up);
Quaternion yQuaternion = Quaternion.AngleAxis(rotationY, Vector3.left);
transform.rotation = originalRotation * xQuaternion * yQuaternion;
// перемещение камеры
transfer = transform.forward * Input.GetAxis("Vertical");
transfer += transform.right * Input.GetAxis("Horizontal");
transform.position += transfer * speed * Time.deltaTime;
//
X = Input.GetAxis("Mouse X");
}
public static float ClampAngle(float angle, float min, float max)
{
if (angle < -360F) angle += 360F;
if (angle > 360F) angle -= 360F;
return Mathf.Clamp(angle, min, max);
}
}
Как поступить? Отключать скрипт если игрок не нажимает кнопки и не двигает мышью?