Решил попробовать сделать мультиплеер на юньке. Нашел Урок , и попробовал создать небольшой проект. Связь была. Сервер подсчитывал количество игроков в онлайне( я на локалке запустил) но как там было сказано , что должен происходить спаун кубов и они должны двигаться-этого не происходит. Помогите. Что нужно в коде изменить чтобы всёже происходил спаун новых игроков, а не открывалось каждый раз новая карта с одним игроком. Да, я программист, дизайнер, сценарист, Я сам себе издатель и сам себе игрок...
Добавлено (27.03.2012, 16:43) --------------------------------------------- При конекте задай зону в виде коллайдера и напиши сам скрипт на спаун. И также с движением чтобы если был спавн у них активировались скрипты на передвижение и etc.
[RequireComponent(typeof(NetworkView))] public class PlayerScript : MonoBehaviour { public void Awake() { if (!networkView.isMine) { // Если не мы владельцы данного объекта, то выключаем данный скрипт. // Но помним, что RPC и OnSerializeNetworkView работают в любом случае enabled = false; } }
public void Update() {
if (networkView.isMine) { // Только владелец может двигать куб! Vector3 moveDirection = new Vector3( Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); float speed = 5; transform.Translate(speed * moveDirection * Time.deltaTime); }
}
public void OnSerializeNetworkView(BitStream stream, NetworkMessageInfo info) { if (stream.isWriting) { // Выполняется у владельца networkview; // Сервер рассылает позицию по сети
Vector3 pos = transform.position; stream.Serialize(ref pos);//"Кодирование" и рассылка
} else { // Выполняется у всех остальных; // Клиенты получают позицию и устанавливают ее
public void OnPlayerDisconnected(NetworkPlayer player) { // Чистим за игроком Debug.Log("Clean up after player " + player); Network.RemoveRPCs(player); Network.DestroyPlayerObjects(player); }
public void OnDisconnectedFromServer(NetworkDisconnection info) { // При отключении от сервера чистим за собой Debug.Log("Clean up a bit after server quit"); Network.RemoveRPCs(Network.player); Network.DestroyPlayerObjects(Network.player);
/* * Запомните, что мы удаляем только наши объекты и не можем удалить объекты других игроков * т.к. мы не знаем где они и мы не следим за ними. * В игре обычно вы должны перезагрузить уровень или загрузить уровень с главным меню ;). * Сейчас мы можем использовать здесь "Application.LoadLevel(Application.loadedLevel);" для сброса сцены. */ Application.LoadLevel(Application.loadedLevel); } }
Да, я программист, дизайнер, сценарист, Я сам себе издатель и сам себе игрок...