Среда, 24 Апреля 2024, 17:43

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » [РЕШЕНО] Создание префаба Объекта у другого игрока [РЕШЕНО]
[РЕШЕНО] Создание префаба Объекта у другого игрока [РЕШЕНО]
serezhaДата: Четверг, 04 Февраля 2021, 21:08 | Сообщение # 1
был не раз
Сейчас нет на сайте
С одного клиента при нажатии на кнопку "Z" создается префаб куба. Если смотреть с других клиентов то они видят, что куб появляется не у того игрока, который нажимал кнопку.

Что нужно исправить в коде, чтобы игроки видели куб только у того игрока, который его создал?

код:

void Awake () {
Point = Player.transform.GetChild (3).gameObject;
Cub = Resources.Load("Cubik");
}

[RPC]
public void RpcKubik() {
if (GetComponent<NetworkView> ().isMine == true) {
GameObject Kubik = (GameObject)Network.Instantiate (Cub, Player.transform.position, Player.transform.rotation, 1);
Kubik.transform.position = Point.transform.position;
}
}

void Update () {
if (Input.GetKeyDown (KeyCode.Z)) {
GetComponent<NetworkView>().RPC("RpcKubik", RPCMode.All);
}
}

Player - префаб игрока
Cub - префаб Куба
Point - точка где появляется куб, является дочерним объектом у Player, перемещается вместе с игроком.

Вопрос решен!


Сообщение отредактировал serezha - Четверг, 02 Декабря 2021, 22:33
drcrackДата: Пятница, 05 Февраля 2021, 01:50 | Сообщение # 2
старожил
Сейчас нет на сайте
в чем смысл вызова rpc в которой стоит проверка которая ограничивает ее владельцем обьекта? не проще ли сразу Network.Instantiate вызвать?
а по проблеме, скорее всего надо так:
Код
GameObject Kubik = (GameObject)Network.Instantiate (Cub, Point.transform.position, Point.transform.rotation, 1);

а следующую строчку убрать

не работал со встроенной сетью в юнити, но по аналогии с PUN должно быть именно так


Сообщение отредактировал drcrack - Пятница, 05 Февраля 2021, 01:51
serezhaДата: Пятница, 05 Февраля 2021, 11:48 | Сообщение # 3
был не раз
Сейчас нет на сайте
Цитата drcrack ()
в чем смысл вызова rpc в которой стоит проверка которая ограничивает ее владельцем обьекта?

Смысл этой проверки в том, чтобы куб создался только у того игрока который нажал клавишу. Мне понятно что это проверка только по локальному игроку. Думаю к этой проверке нужно еще что то добавить в код, чтобы проверка была по сети.

Цитата drcrack ()
а по проблеме, скорее всего надо так:
Код
GameObject Kubik = (GameObject)Network.Instantiate (Cub, Point.transform.position, Point.transform.rotation, 1);

а следующую строчку убрать

Стало еще хуже, теперь куб создается у всех и у каждого игрока создается по 2 штуки


Сообщение отредактировал serezha - Пятница, 05 Февраля 2021, 12:02
drcrackДата: Пятница, 05 Февраля 2021, 16:20 | Сообщение # 4
старожил
Сейчас нет на сайте
ну так создавай тока у одного)
Код
if (Input.GetKeyDown (KeyCode.Z) && GetComponent<NetworkView>().isMine)  {
serezhaДата: Пятница, 05 Февраля 2021, 21:18 | Сообщение # 5
был не раз
Сейчас нет на сайте
drcrack, Спасибо! :)

Добавлено (05 Февраля 2021, 21:30)
---------------------------------------------
1) Всё отлично работает так:
GameObject Kubik = (GameObject)Network.Instantiate (Cub, Player.transform.position, Player.transform.rotation, 1);
Kubik.transform.position = Point.transform.position;

2) А вот так, создаются сразу 2 штуки куба:
GameObject Kubik = (GameObject)Network.Instantiate (Cub, Point.transform.position, Point.transform.rotation, 1);

Из 2-го варианта по идеи..должен один куб создаваться, но у меня их сразу становится 2. С чем это связано так и не понял... blink

ArtemSДата: Понедельник, 08 Февраля 2021, 17:37 | Сообщение # 6
почетный гость
Сейчас нет на сайте
у меня есть bool _isAuthority, где true - я, false - остальные игроки.
когда создаюсь я, мне вешается true, у остальных false.
Правда я на signalR.
Код

if (HubConnection.ConnectionId == syncObjectModel.Authority)

{ Identety.IsAuthority = true; }


Делаешь проверку, я ли жму, и подомной создаешь. Ну а остальным рассылаешь сервером, под каким именно игроком создать


хуяк, хуяк и в продакшн

Сообщение отредактировал ArtemS - Понедельник, 08 Февраля 2021, 17:40
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » [РЕШЕНО] Создание префаба Объекта у другого игрока [РЕШЕНО]
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг