Network controller

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Network controller

Сообщение MorgaNImpaler 28 фев 2013, 15:42

Возникла проблема с ThirdPersonController в игре по интернету (Делаю mmorpg) когда на сервере один персонаж управление нормальное, но когда заходят ещё персонажи то с одного клиента можно управлять всеми персами. Нашел на другом форуме подобную тему, там был ответ
"на всё что в апдейте засунь под if(NetworkView.isMine)
{

}
и соответственно на игроках должен висеть компонент NetworkView" но в ThirdPersonController нету апдейта...
Использую сервер "Flexible Game Server" там в клиентском скрипте ComponentTransform было банальное управление по 2 осям, и персонажи нормально управлялись а когда ставлю ThirdPersonController их начинает колбасить. В чём проблема подскажите пожалуйста?:D
MorgaNImpaler
UNец
 
Сообщения: 1
Зарегистрирован: 28 фев 2013, 14:42

Re: Network controller

Сообщение Илья Шевченко 03 мар 2013, 22:44

я вообще стандартные контроллеры не люблю... А не проще ли будет написать свой контроллер? С ним, все будет проще.. :) , а так, насколько я помню, то в стандартных контроллерах управление распихано по функциям... вот ставьте Netwokr.IsMine, для функций управления персом :)
Илья Шевченко
UNIт
 
Сообщения: 67
Зарегистрирован: 18 ноя 2011, 14:23

Re: Network controller

Сообщение AndreyMust19 03 мар 2013, 23:49

Причина, скорее всего, в том, что у вас движение и управление персонажем слито в один скрипт. Оба персонажа опрашивают одну клавиатуру и мышь и, как результат - двигаются вместе. Разделите скрипт управления от скрипта движения персонажа, создавайте скрипт управления только если персонаж был создан тем же приложением (NetworkView.IsMine). То есть управляться персонаж должен только на той же машине, на которой он был создан. А его клоны на других клиентах должны синхронизироваться с сервером.
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

Re: Network controller

Сообщение dobec666 04 мар 2013, 00:04

MorgaNImpaler писал(а):Возникла проблема с ThirdPersonController в игре по интернету (Делаю mmorpg) когда на сервере один персонаж управление нормальное, но когда заходят ещё персонажи то с одного клиента можно управлять всеми персами. Нашел на другом форуме подобную тему, там был ответ
"на всё что в апдейте засунь под if(NetworkView.isMine)
{

}
и соответственно на игроках должен висеть компонент NetworkView" но в ThirdPersonController нету апдейта...
Использую сервер "Flexible Game Server" там в клиентском скрипте ComponentTransform было банальное управление по 2 осям, и персонажи нормально управлялись а когда ставлю ThirdPersonController их начинает колбасить. В чём проблема подскажите пожалуйста?:D


Синтаксис:
Используется javascript
function Awake () {
if (!networkView.isMine) {
enabled = false;
}
}


Работает банально, если ты не владелец скрипта - отключает его.
Застрял на настройке мультиплеера. :(
Аватара пользователя
dobec666
UNITрон
 
Сообщения: 161
Зарегистрирован: 27 фев 2013, 22:33

Re: Network controller

Сообщение lawson 04 мар 2013, 00:26

dobec666 писал(а):
MorgaNImpaler писал(а):Возникла проблема с ThirdPersonController в игре по интернету (Делаю mmorpg) когда на сервере один персонаж управление нормальное, но когда заходят ещё персонажи то с одного клиента можно управлять всеми персами. Нашел на другом форуме подобную тему, там был ответ
"на всё что в апдейте засунь под if(NetworkView.isMine)
{

}
и соответственно на игроках должен висеть компонент NetworkView" но в ThirdPersonController нету апдейта...
Использую сервер "Flexible Game Server" там в клиентском скрипте ComponentTransform было банальное управление по 2 осям, и персонажи нормально управлялись а когда ставлю ThirdPersonController их начинает колбасить. В чём проблема подскажите пожалуйста?:D


Синтаксис:
Используется javascript
function Awake () {
if (!networkView.isMine) {
enabled = false;
}
}


Работает банально, если ты не владелец скрипта - отключает его.

еще проще
if (!netwotrkView.isMine) Destroy(this);
т к скрипт управления все равно не понадобиться на объекте
lawson
UNIверсал
 
Сообщения: 481
Зарегистрирован: 14 сен 2012, 21:20

Re: Network controller

Сообщение dobec666 04 мар 2013, 00:49

еще проще
if (!netwotrkView.isMine) Destroy(this);
т к скрипт управления все равно не понадобиться на объекте


Не пробовал, но логично :D
Блин, у меня вообще какая то каша началась.. Делаю коннект, загружаю уровень, спаунится игрок, все норм.
Потом выхожу обратно в главное меню(Ну, типо через ескейп), и при нажатиях на "регистрация", "вход" и т.п. начинает игрок спаунится.. в меню.. втф? =))

И самая жесть в том что в меню естественно нет объектов связанных со спауном вообще! :|
Застрял на настройке мультиплеера. :(
Аватара пользователя
dobec666
UNITрон
 
Сообщения: 161
Зарегистрирован: 27 фев 2013, 22:33

Re: Network controller

Сообщение lawson 04 мар 2013, 01:03

ну наверное потому что ты спавнишь игрока через загрузку префаба прямо на сцене?
lawson
UNIверсал
 
Сообщения: 481
Зарегистрирован: 14 сен 2012, 21:20

Re: Network controller

Сообщение dobec666 04 мар 2013, 01:08

lawson писал(а):ну наверное потому что ты спавнишь игрока через загрузку префаба прямо на сцене?

Да на локации(но в меню то его нет, это разные сцены) спавница загрузкой префаба.
Я щас все скрипты перебрал, не вижу связи, при нажатии клавиш с connect(); начинает спавнить этот префаб.
в void Connect() указано только это: { Network.Connect("127.0.0.1", 25010); }
При чем тут спаун игрока? :((
А сам спаун должен вызывается только функцией Start () , и только в одной локе, и в этом же скрипте указан его префаб.. мдя.



Вот скрипт со спауном, находиться в локе номер 3, больше его нет нигде.
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class SpawnScript : MonoBehaviour {

        //public NetworkPlayer newPlayer;
        public Transform playerPrefab;
 
    public void Start () {
        Spawnplayer();
        }
       

    public void Spawnplayer() {
                Transform myNewTrans = (Transform)Network.Instantiate(playerPrefab, transform.position, transform.rotation, 0);
        }      
}


функция Spawnplayer не присутствуют больше ни в одном скрипте, только в этом.
и каким образом игрок может спауниться в главном меню? )))))
Застрял на настройке мультиплеера. :(
Аватара пользователя
dobec666
UNITрон
 
Сообщения: 161
Зарегистрирован: 27 фев 2013, 22:33


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 27