Одна камера на двух мультиплеерах.
Добрый день. Никак не получается сделать следующее: имеется клиент и сервер. Требуется чтобы можно было управлять одной камерой из сервера и из клиента. Пробовал на камеру ставить нетворктранформ но он работает только в одну сторону и то как то не правильно. Так же пробовал передавать через РПС но передает только координаты и поворот не передает.
|
Ответ: Одна камера на двух мультиплеерах.
А покажи свой код использования RPC, в котором не передает поворот.
|
Ответ: Одна камера на двух мультиплеерах.
Код:
using UnityEngine; Этот скрипт положен на пустой ГО и повесил нетворквие. public GameObject Camera - летающая камера которой управляет клиент. У меня юнити 5, хотел сделать чкркз нетворкпозитион но результат тот же что и сейчас. |
Ответ: Одна камера на двух мультиплеерах.
Ну RPCMode.All это перебор. Надо RPCMode.Server. Кроме того, надо передавать серверу не положение камеры и ее вращение, а информацию о вводе с клавиатуры и мыши. Например оси Vertical/Horizontal/Mouse X/Mouse Y.
На сервере обрабатывать эти данные, применять к камере трансформации, а потом с помощью NetworkView и Transform передавать всем координаты камеры и ее вращение. Например через другой RPC с RPCMode.Others. |
Ответ: Одна камера на двух мультиплеерах.
То есть отсылать серверу какую именно клавишу нажали а на сервере вызывать специальную функцию которая имитирует нажатие данной клавиши? Или как?
|
Ответ: Одна камера на двух мультиплеерах.
Сделал так
Код:
using UnityEngine; |
Ответ: Одна камера на двух мультиплеерах.
Ну ты отсылаешь управление каждый кадр, довольно часто на самом деле, попробуй его отсылать хотя бы в FixedUpdate. Потом тут в сприпте нет отправки положения и вращения всем остальным. NetworkView настроен на трансформ? И опять же RPCMode.Server надо
|
Ответ: Одна камера на двух мультиплеерах.
FixedUpdate - сделал.
NetworkView настроен на трансформ? - Да и на меню для подключения и там где правлю данный скрипт. RPCMode.All - это пока временно, потом сделаю условие какой клиент сможет смотреть и управлять камерой другого клиента. Пока делаю между сервером и клиентом. Вроде все правильно я понимаю? То что это в апдате лежит там тоже будет потом код на проверку для какого клиента нужно вызывать. Почему позиция нормально работает если закоментить Код:
// Движения мыши -> Вращение камеры Код:
public void SetPos() |
Ответ: Одна камера на двух мультиплеерах.
Поворот как бы сбрасывается, не хочет устанавливаться.
|
Ответ: Одна камера на двух мультиплеерах.
Оно у тебя и не работает видимо. Переменная Y непонятно откуда берется. Еще у тебя сервер сам себе управление шлет. Возможно он и сбрасывает.
|
Ответ: Одна камера на двух мультиплеерах.
Упростил код но все равно поворот не хочет устанавливаться, он мелькнет на пару долесекунд и сброситься. Перемещение камеры работает хорошо.
Код:
using UnityEngine; Код:
using UnityEngine; |
Часовой пояс GMT +4, время: 20:50. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot