Показать сообщение отдельно
Старый 19.06.2014, 05:24   #9
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Очень нужна ваша помощь

в общем проще ответить как прикреплять к скрипту респавнутый объект

вот коды чего сейчас изучаю:
using UnityEngine;
using System.Collections;

public class 
NetworkManager MonoBehaviour {

public 
GameObject playerPrefab;

private const 
string typeName "UniqueGameName";
private const 
string gameName "RoomName";

private 
void StartServer()
{
    
Network.InitializeServer(425000, !Network.HavePublicAddress());
    
MasterServer.RegisterHost(typeNamegameName);
}

private 
HostData[] hostList;

private 
void RefreshHostList()
{
    
MasterServer.RequestHostList(typeName);
}

void OnMasterServerEvent(MasterServerEvent msEvent)
{
    if (
msEvent == MasterServerEvent.HostListReceived)
        
hostList MasterServer.PollHostList();
}

private 
void JoinServer(HostData hostData)
{
    
Network.Connect(hostData);
}

void OnGUI()
{
    if (!
Network.isClient && !Network.isServer)
    {
        if (
GUI.Button(new Rect(100100250100), "Start Server"))
            
StartServer();

        if (
GUI.Button(new Rect(100250250100), "Refresh Hosts"))
            
RefreshHostList();

        if (
hostList != null)
        {
            for (
int i 0hostList.Lengthi++)
            {
                if (
GUI.Button(new Rect(400100 + (110 i), 300100), hostList[i].gameName))
                    
JoinServer(hostList[i]);
            }
        }
    }
}

void OnServerInitialized()
{
    
SpawnPlayer();
}

void OnConnectedToServer()
{
    
SpawnPlayer();
}

private 
void SpawnPlayer()
{
    
Network.Instantiate(playerPrefab, new Vector3(0f5f0f), Quaternion.identity0);
}


using UnityEngine;
using System.Collections;

public class 
Player MonoBehaviour
{

public 
float speed 10f;

void Start() {
    if (!
networkView.isMinenetworkView.observed=this;
}

void InputMovement()
{
    if (
Input.GetKey(KeyCode.W))
        
rigidbody.MovePosition(rigidbody.position Vector3.forward speed Time.deltaTime);
    
    if (
Input.GetKey(KeyCode.S))
        
rigidbody.MovePosition(rigidbody.position Vector3.forward speed Time.deltaTime);
    
    if (
Input.GetKey(KeyCode.D))
        
rigidbody.MovePosition(rigidbody.position Vector3.right speed Time.deltaTime);
    
    if (
Input.GetKey(KeyCode.A))
        
rigidbody.MovePosition(rigidbody.position Vector3.right speed Time.deltaTime);
}

private 
float lastSynchronizationTime 0f;
private 
float syncDelay 0f;
private 
float syncTime 0f;
private 
Vector3 syncStartPosition Vector3.zero;
private 
Vector3 syncEndPosition Vector3.zero;

void OnSerializeNetworkView(BitStream streamNetworkMessageInfo info)
{
    
Vector3 syncPosition Vector3.zero;
    
Vector3 syncVelocity Vector3.zero;
    if (
stream.isWriting)
    {
        
syncPosition rigidbody.position;
        
stream.Serialize(ref syncPosition);
        
        
syncVelocity rigidbody.velocity;
        
stream.Serialize(ref syncVelocity);
    }
    else
    {
        
stream.Serialize(ref syncPosition);
        
stream.Serialize(ref syncVelocity);
        
        
syncTime 0f;
        
syncDelay Time.time lastSynchronizationTime;
        
lastSynchronizationTime Time.time;
        
        
syncEndPosition syncPosition syncVelocity syncDelay;
        
syncStartPosition rigidbody.position;
    }
}

void Update()
{
    if (
networkView.isMine)
    {
        
InputMovement();
    }
    else
    {
        
SyncedMovement();
    }
}

private 
void SyncedMovement()
{
    
syncTime += Time.deltaTime;
    
rigidbody.position Vector3.Lerp(syncStartPositionsyncEndPositionsyncTime syncDelay);
}




или надо б\у камеру удалять, а у спавн-объекта пересоздавать и закреплять?
(Offline)
 
Ответить с цитированием