Я надеюсь есть тут люди которые ковыряются в новом Network который был добавлен а версии 5.1х
Есть патрон/снаряд/пуля/мячик который спавнится действием игрока. Он летит себе летит и тут попадает в объект
При спавне так же отсылается серверу действие, и на сервере и у все игроков он тоже спавнится.
Код
[Command]
void CmdShoot(Vecto3 pos)
{
GameObject missil = Instantiate (missilPref,pos,Quaternion.identity) as GameObject ;
NetworkServer.Spawn (missil);
}
< до этого момента все норм
Летит он себе летит и тут как я уже сказал залетает
При попадании в игрока он вызывает функцию урона
Если игрок является игроком то игрок рассылает всем аватаркам текущее состояние Здоровья
Код
public void doDamage(float dmg)
{
if(isLocalPlayer)
{
HP -= dmg;
CmdsetHP(HP);
}
}
< Тут тоже все норм
Но проблема далее. Как отослать всем аватаркам снаряда что он попал в цель, должен проиграть Партиклю и удалиться со сцены.
Если снаряд хоста попал в игрока тут все просто простой [Command] работает, но если снаряд был от клиента то мы получим предупреждение что аватарка не может отсылать команды. C RPC тоже не катит. Снаряд является не аватаркой только тот что на сервере. Я хочу чтобы снаряд наносил урон только когда именно в игрока попал снаряд а не в его аватарку чувака который возможно лагает.
Так как в отправлять данны с аватарки на серверный обхект и на все аватарки других игроков