Решил с UNet попробовать разобраться. Один игрок выступает в роли хоста, второй - обычный клиент.
У меня есть скрипт
Creator.cs. В двух словах, это префаб плеера, который по клику на игровом уровне создает определенную фигуру (квадрат), который падает вниз. Очень прошу подсказать что и куда прописать, что-бы работало следующим образом: игрок хостит игру; к нему подключается второй игрок; по какому-то триггеру сделать поочередные ходы для хоста и клиента; пока триггер указывает на хоста, скрипт Creator.cs на нем не работает, им сейчас управляет хост, и наоборот - во время хода клиента, Creator.cs недоступен для хоста.
Creator.cs.
Используется csharp
using UnityEngine;
class Creator : MonoBehaviour
{
[SerializeField] GameObject[] _square; // префаб квадрата
[SerializeField] GameObject platform; // префаб платформы, на которую падают квадраты
Rigidbody2D rb2D;
GameObject current; // фантом квадрата, который показывает позицию падения квадрата
float pos = 300.0f; // фиксированная высота (значение у), по которой двигается фантом по оси 0х
void Start()
{
Instantiate (platform, new Vector3 (0f, -350f, 0f), Quaternion.identity); // создание платформы, на которую падают квадраты
}
void Update()
{
if (Figure.sleep == true) { // значение из другого скрипта, которое определяет находится ли предыдущий квадрат в режиме сна. Только после его фиксации возможно создание следующего квадрата
if (current == null) {
current = Instantiate (_square [0]); // создание квадрата на месте фантома
}
Vector3 fixedPosition = Camera.main.ScreenToWorldPoint (Input.mousePosition); // движением мыши меняем позицию фантома влево-вправо
fixedPosition.z = 0.0f;
fixedPosition.y = pos; // фиксированная высота
current.transform.position = fixedPosition; // позиция фантома квадрата
if (Input.GetMouseButtonUp (0)) {
Figure.sleep = false; // передаем в другой скрипт информацию, что текущий квадрат находится в движении
current = null; // уничтожение фантома
}
}
}
public void ChangePos()
{
pos += Figure.result.y - 200.0f; // метод, который в зависимости от высоты башни увеличивает фиксированную высоту фантома
}
}
Очень прошу помочь, потому как не могу продолжать работу, не реализовав мультиплеер. Застрял и не могу выпутаться уже который день. Если вдруг нужен фулл проект для подсказки, в лс могу скинуть.
П.С. Если реализовать такой функционал в реалиях хост-клиент
невозможно очень сложно, тогда прошу помочь с реализацией архитектуры, когда к серверу подключаются два клиента для игры.
П.П.С. Максимум, которого я достигал в решении проблемы, это отображение на клиенте действий хоста. На этом тупик.
Ниже для наглядности предоставлю картинку: