Показать сообщение отдельно
Старый 13.06.2012, 13:28   #11
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Unity3d - сеть (M2H_2B)

Еще один вариант - префаб игрока - пустышка, управляющая создаваемыми им моделями.

using UnityEngine

[
RequireComponent(typeof(NetworkView))] 
public class 
PlayerScript MonoBehaviour 

    public 
GameObject fpsPrefab;
    public 
GameObject locomotionPrefab;
    private 
GameObject controlledObject;


    public 
void Awake() 
    { 
        if (!
networkView.isMine
        { 
            
// Если не мы владельцы данного объекта, то выключаем данный скрипт. 
            // Но помним, что RPC и OnSerializeNetworkView работают в любом случае 
            
enabled false
            
controlledObject Instantiate(locomotionPrefab) as GameObject;
        } 
        else
        {
            
controlledObject Instantiate(fpsPrefab) as GameObject;
        }
    } 

    public 
void Update() 
    { 

        if (
networkView.isMine
        { 
            
// Только владелец может двигать куб!             
            
Vector3 moveDirection = new Vector3
                
Input.GetAxis("Horizontal"), 0Input.GetAxis("Vertical")); 
            
float speed 5
            
controlledObject.transform.Translate(speed moveDirection Time.deltaTime); 
        } 

    } 

    public 
void OnDestroy() 
    { 
       
Destroy(controlledObject);
    }


    public 
void OnSerializeNetworkView(BitStream streamNetworkMessageInfo info
    { 
        if (
stream.isWriting
        { 
            
// Выполняется у владельца networkview;  
            // Сервер рассылает позицию по сети 

            
Vector3 pos controlledObject.transform.position
            
stream.Serialize(ref pos);//"Кодирование" и рассылка 

        

        else 
        { 
            
// Выполняется у всех остальных;  
            // Клиенты получают позицию и устанавливают ее 

            
Vector3 posReceive Vector3.zero
            
stream.Serialize(ref posReceive); //"Декодирование" и прием 
            
controlledObject.transform.position posReceive

        } 
    } 

__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием