Показать сообщение отдельно
Старый 02.01.2013, 15:34   #1
mepihin
ПроЭктировщик
 
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений
(для 7 пользователей)
Почему не уничтожается клиент?

Такая проблема: раньше, когда игрок подключался к серву(один из игроков), а потом отключался, то камера сервера(одноги из игрока) отклбчалась и перекидывалась на камеру меню, но этот косяк убрал, получилось так:
function OnPlayerDisconnected(pl:NetworkPlayer)
    {
        if(
networkView.isMine)
        {
            
Network.RemoveRPCs(pl);
            
Network.DestroyPlayerObjects(pl);
            
camera.enabled = true;
            var 
bg:AudioListener;
            
bg = gameObject.GetComponent(AudioListener);
            
bg.enabled = true;
        }        
    } 
Но теперь появился такой баг, что когда игрок отключается от сервера, его объект(модель игрока) не уничтожается. Что делать?
Вот полный скрипт коннекта + спавн:
#pragma strict
#pragma implicit
#pragma downcast

     
var PlayerPrefab:GameObject;
    var 
ip = "25.187.2.70";
    var 
connected:boolean;
    
    function 
Awake()
    {
        
Screen.showCursor = true;
    }
    
    function 
CreatePlayer()
    {
        
connected = true;
        var 
g = Network.Instantiate(PlayerPrefab, transform.position, transform.rotation, 1);
        
g.camera.enabled = true;
        
camera.enabled = false;
        var 
bg:AudioListener;
        
bg = gameObject.GetComponent(AudioListener);
        
bg.enabled = false;
    }
    function 
OnDisconnectedFromServer(info:NetworkDisconnection)
    {
        
connected = false;
        
Network.RemoveRPCs(Network.player);
        
Network.DestroyPlayerObjects(Network.player);
        
camera.enabled = true;
        var 
bg:AudioListener;
        
bg = gameObject.GetComponent(AudioListener);
        
bg.enabled = true;
        
Application.LoadLevel(Application.loadedLevel);
    }
    function 
OnPlayerDisconnected(pl:NetworkPlayer)
    {
        if(
networkView.isMine)
        {
            
Network.RemoveRPCs(pl);
            
Network.DestroyPlayerObjects(pl);
            
camera.enabled = true;
            var 
bg:AudioListener;
            
bg = gameObject.GetComponent(AudioListener);
            
bg.enabled = true;
        }        
    }
    function 
OnConnectedToServer()
    {
        
CreatePlayer();
    }
    function 
OnServerInitialized()
    {
        
CreatePlayer();
    }
    function 
OnGUI()
    {
        if (!
connected)
        {
            
ip = GUI.TextField(new Rect(10,5,100,20),ip);
            if (
GUI.Button(new Rect(10,30,100,20),"connect"))
            {
                
Network.Connect(ip, 5300);
            }
            if (
GUI.Button(new Rect(10,55,100,20),"host"))
            {
                
Network.InitializeServer(10, 5300, false);
            }
        }
        if(
connected==true)
        {
            if (
GUI.Button(new Rect(10,5,100,20),"disconnect"))
            {
                
Network.Disconnect(200);
            }
        }
    } 
(Offline)
 
Ответить с цитированием