Hello!
I try to write my own player spawning logic, which create player’s gameobject dynamically, but i have some issue with using NetworkTransform for created objects. NetowrkTransform does not want syncing gameobject positions! If i use prepared prefab with ClientScene.RegisterPrefab() all worked perfectly.
This my test script:
using UnityEngine;
using UnityEngine.Networking;
public class Test : NetworkManager
{
// public GameObject testPrefab;
public override void OnServerAddPlayer(NetworkConnection conn, short playerCOntrollerId)
{
Debug.Log("Add new player!");
// GameObject result = (GameObject)Instantiate(testPrefab, Vector3.zero, Quaternion.identity);
// NetworkServer.AddPlayerForConnection(conn, result, playerCOntrollerId);
GameObject result = SpawnPlayerObject(Vector3.zero, NetworkHash128.Parse("asd"));
NetworkServer.AddPlayerForConnection(conn, result, playerCOntrollerId, NetworkHash128.Parse("asd"));
}
public override void OnClientConnect(NetworkConnection conn)
{
Debug.Log("New player connected!");
// ClientScene.RegisterPrefab(testPrefab);
ClientScene.RegisterSpawnHandler(NetworkHash128.Parse("asd"), SpawnPlayerObject, UnspawnPlayerObject);
base.OnClientConnect(conn);
}
public GameObject SpawnPlayerObject(Vector3 position, NetworkHash128 hash)
{
Debug.Log("Custom new player spawn!");
GameObject result = GameObject.CreatePrimitive(PrimitiveType.Capsule);
result.AddComponent<NetworkIdentity>();
result.AddComponent<NetworkTransform>();
new GameObject("player-child").transform.SetParent(result.transform);
result.transform.position = position;
return result;
}
public void UnspawnPlayerObject(GameObject unspawnObject)
{
Debug.Log("Custom player unspawn!");
Destroy(unspawnObject);
}
}
And this i have in result:
[58535-снимок-экрана-2015-11-21-в-183418.png|58535]
I think i do something wrong in spawhandlers registration or may be in hashes. And also confuses me pink of the spawned object on the client.
What i’m doing wrong?