Среда, 19 Июня 2024, 03:18

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Камеры в мультиплеере [РЕШЕНО]
dzrone3488Дата: Суббота, 07 Мая 2016, 20:46 | Сообщение # 1
участник
Сейчас нет на сайте
Я не знаю что не так но у меня в мультиплеере путаются камеры. Когда подключаешься к серверу как клиент, камеры меняются. Этим объясняется смена контроля, и лагучасть одной из камер. Прошу помощи! Всё подробно увидеть своими глазами можно на видео! Код там же! Заранее спасибо!

https://youtu.be/5vmcDz76-Wg

Код

using UnityEngine;
using System.Collections;

/// MouseLook rotates the transform based on the mouse delta.
/// Minimum and Maximum values can be used to constrain the possible rotation

/// To make an FPS style character:
/// - Create a capsule.
/// - Add the MouseLook script to the capsule.
///   -> Set the mouse look to use LookX. (You want to only turn character but not tilt it)
/// - Add FPSInputController script to the capsule
///   -> A CharacterMotor and a CharacterController component will be automatically added.

/// - Create a camera. Make the camera a child of the capsule. Reset it's transform.
/// - Add a MouseLook script to the camera.
///   -> Set the mouse look to use LookY. (You want the camera to tilt up and down like a head. The character already turns.)
[AddComponentMenu("Camera-Control/Mouse Look")]
public class MouseLook : MonoBehaviour {

    public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
    public RotationAxes axes = RotationAxes.MouseXAndY;
    public float sensitivityX = 15F;
    public float sensitivityY = 15F;

    public float minimumX = -360F;
    public float maximumX = 360F;

    public float minimumY = -60F;
    public float maximumY = 60F;

    float rotationY = 0F;

    void Update ()
    {
  if (networkView.isMine) {

      if (axes == RotationAxes.MouseXAndY) {
        float rotationX = transform.localEulerAngles.y + Input.GetAxis ("Mouse X") * sensitivityX;
   
        rotationY += Input.GetAxis ("Mouse Y") * sensitivityY;
        rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
   
        transform.localEulerAngles = new Vector3 (-rotationY, rotationX, 0);
      } else if (axes == RotationAxes.MouseX) {
        transform.Rotate (0, Input.GetAxis ("Mouse X") * sensitivityX, 0);
      } else {
                    if (networkView.isMine)
    {
        rotationY += Input.GetAxis ("Mouse Y") * sensitivityY;
        rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
   
        transform.localEulerAngles = new Vector3 (-rotationY, transform.localEulerAngles.y, 0);
    }
    else
    {

    }
      }
    }
    }
    
    void Start ()
    {
  // Make the rigid body not change rotation
  if (GetComponent<Rigidbody>())
   GetComponent<Rigidbody>().freezeRotation = true;
    }
}


Код

using UnityEngine;
using gui = UnityEngine.GUILayout;

public class GameMenu : MonoBehaviour
{
    public GameObject PlayerPrefab;
    string ip = "127.0.0.1";
    
    public void CreatePlayer()
    {
  connected = true;
  var g = (GameObject)Network.Instantiate(PlayerPrefab, transform.position, transform.rotation, 1);
  g.GetComponentInChildren<Camera> ().enabled = true;
  camera.enabled = false;
    }
    void OnDisconnectedFromServer()
    {
  connected = false;
    }
    void OnPlayerDisconnected(NetworkPlayer pl)
    {
  Network.DestroyPlayerObjects(pl);
    
    }
    void OnConnectedToServer()
    {
  CreatePlayer();
    }
    void OnServerInitialized()
    {
  CreatePlayer();
    }
    bool connected;
    void OnGUI()
    {
  if (!connected)
  {
   ip = gui.TextField(ip);
   if (gui.Button("Подключиться"))
   {
    Network.Connect(ip, 5300);
   }
   if (gui.Button("Создать"))
   {
    Network.InitializeServer(10, 5300, false);
   }
  }
    }
}



Надо было просто в префабе с First Person Controller камеру изначально сделать выключенной, чтобы сервер их включал в зависимости от NetworkView игрока, то бишь его сети


Я делаю игры, а вы в них играете! :)
Моя группа по созданию игр - www.vk.com/dzrone



Сообщение отредактировал dzrone3488 - Суббота, 07 Мая 2016, 21:54
TLTДата: Суббота, 07 Мая 2016, 22:54 | Сообщение # 2
Сейчас нет на сайте
Сам спросил, сам ответил. Вот это я понимаю!

Дао, выраженное словами, не есть истинное Дао.
dima9595Дата: Суббота, 07 Мая 2016, 23:53 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
TLT, редко таких встретишь, особенно, если ответ тоже напишет) + ему)

  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг