|
01.01.2013, 17:32
|
#1
|
ПроЭктировщик
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений (для 7 пользователей)
|
Проблема с фонарем
Почему, когда я создал сетку и все прекрасно работает, игрок выключает фонарик, его не видит, а я вижу его фонарь?
Вот сам скрипт:
#pragma strict
var spotlight:Light;
var activelight = true;
function Update()
{
if(networkView.isMine)
{
if(activelight==true)
spotlight.enabled = true;
else
{
if(activelight==false)
spotlight.enabled = false;
}
if(Input.GetKeyDown(KeyCode.F) && activelight==true)
{
activelight = false;
}
else
{
if(Input.GetKeyDown(KeyCode.F) && activelight==false)
{
activelight = true;
}
}
}
}
|
(Offline)
|
|
01.01.2013, 17:34
|
#2
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблема с фонарем
Потому что всем игрокам по сети надо отправить сообщение (RPC) о выключении фонаря
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
01.01.2013, 18:07
|
#3
|
ПроЭктировщик
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблема с фонарем
Сообщение от pax
Потому что всем игрокам по сети надо отправить сообщение (RPC) о выключении фонаря
|
Поскажи как, а то что-то не пойму.
|
(Offline)
|
|
01.01.2013, 18:18
|
#4
|
Бывалый
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений (для 428 пользователей)
|
Ответ: Проблема с фонарем
У меня было так. Есть игрок и есть "фэйки", которыми управляют сетевые данные, которой мы получаем. Между таким игроком и фэйком есть общий скрипт. В этом скрипте есть функция включить фонарь, которая при наличии сети запускает RPC функцию. В этом же скрипте есть ответ на эту ф-ю, которая уже и включает фонарь.
Скорее всего ты ничего не понял
|
(Offline)
|
|
01.01.2013, 18:38
|
#5
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблема с фонарем
Сообщение от mepihin
Поскажи как, а то что-то не пойму.
|
Пример отправки всем сообщения тут: http://docs.unity3d.com/Documentatio...PCDetails.html
|
(Offline)
|
|
01.01.2013, 18:57
|
#6
|
ПроЭктировщик
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблема с фонарем
чет я ничего не понял.
это получается, что я должен вот так код изменить?
#pragma strict
var spotlight:Light;
var activelight = true;
function Update()
{
if(networkView.isMine)
{
if(activelight==true)
{
spotlight.enabled = true;
networkView.RPC("spotlight.enabled",RPCMode.All,spotlight.enabled=true)
}
else
{
if(activelight==false)
spotlight.enabled = false;
}
if(Input.GetKeyDown(KeyCode.F) && activelight==true)
{
activelight = false;
}
else
{
if(Input.GetKeyDown(KeyCode.F) && activelight==false)
{
activelight = true;
}
}
}
}
Я вообще справку эту не понял.
|
(Offline)
|
|
01.01.2013, 19:06
|
#7
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблема с фонарем
я на js не программирую
|
(Offline)
|
|
01.01.2013, 19:58
|
#8
|
ПроЭктировщик
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблема с фонарем
ну напиши на C# я перепешу
Я то и то знаю
|
(Offline)
|
|
01.01.2013, 23:03
|
#9
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблема с фонарем
[RPC] void SetSpotlight(int state) { spotlight.enabled = state == 1; }
использовать так:
networkView.RPC("SetSpotlight",RPCMode.All,spotlight.enabled?1:0);
|
(Offline)
|
|
01.01.2013, 23:17
|
#10
|
ПроЭктировщик
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблема с фонарем
то есть конечный код будет вот такой?
#pragma strict
var spotlight:Light; var activelight:int = 1;
function Update() { if(networkView.isMine) { if(activelight==true) networkView.RPC("SetSpotlight",RPCMode.All,spotlight.enabled?1:0); else { if(activelight==false) networkView.RPC("SetSpotlight",RPCMode.All,spotlight.enabled?1:0); } if(Input.GetKeyDown(KeyCode.F) && activelight==true) { GameObject.FindGameObjectWithTag("light").animation.CrossFade("off"); activelight = 0; } else { if(Input.GetKeyDown(KeyCode.F) && activelight==false) { GameObject.FindGameObjectWithTag("light").animation.CrossFade("on"); activelight = 1; } } } } @RPC function SetSpotlight(state:int) { spotlight.enabled = state == 1; }
но вот что-то фонарик не выключается и не включается. Я что-то не так сделал это точно... Подскажите что.
|
(Offline)
|
|
01.01.2013, 23:19
|
#11
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Проблема с фонарем
Убил сеть посылая каждый кадр RPC) Посылай только когда меняется состояние.
Эх
function Update() { if(networkView.isMine) { if(Input.GetKeyDown(KeyCode.F) && activelight==true) { GameObject.FindGameObjectWithTag("light").animation.CrossFade("off"); networkView.RPC("SetSpotlight",RPCMode.All, 0); } else if(Input.GetKeyDown(KeyCode.F) && activelight==false) { GameObject.FindGameObjectWithTag("light").animation.CrossFade("on"); networkView.RPC("SetSpotlight",RPCMode.All, 1); } } }
@RPC function SetSpotlight(state:int) { activelight = state; spotlight.enabled = state == 1; }
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
02.01.2013, 00:06
|
#12
|
ПроЭктировщик
Регистрация: 31.12.2012
Сообщений: 165
Написано 5 полезных сообщений (для 7 пользователей)
|
Ответ: Проблема с фонарем
спс, вот фулл скрипт:
#pragma strict
var spotlight:Light; var activelight:int = 1;
function Update() { if(networkView.isMine) { if(Input.GetKeyDown(KeyCode.F) && activelight==1) { GameObject.FindGameObjectWithTag("light").animation.CrossFade("off"); networkView.RPC("SetSpotlight",RPCMode.All, 0); } else if(Input.GetKeyDown(KeyCode.F) && activelight==0) { GameObject.FindGameObjectWithTag("light").animation.CrossFade("on"); networkView.RPC("SetSpotlight",RPCMode.All, 1); } } } @RPC function SetSpotlight(state:int) { activelight = state; spotlight.enabled = state == 1; }
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 14:24.
|