Как реализовать стрельбу в мультиплеерном шутере?

Сеть в Unity3D

Как реализовать стрельбу в мультиплеерном шутере?

Сообщение NickelBlack 22 окт 2016, 16:09

Взялся делать мультиплеерный шутер, сразу скажу что моя первая сетевая игра. Решил не брать стандартные network менеджеры в юнити и сделать всё самому. Всё остановилось на скрипте стрельбы, я его пробовал сделать самыми разными способами, в итоге решил при выстреле, отправлять raycast, если тэг объекта "player", получать его имя (имена у меня у всех игроков уникальные) и отправлять RPC с именем игрока, всем кроме отправителя (RPCMode.Others), и что бы каждый взял своё имя и сравнил с именем которое передалось в параметре, и если оно совпало отнять жизней. Вся проблема в том, что когда я пытаюсь узнать своё имя, он возвращает имя отправителя. В коде это выглядит примерно так:
Синтаксис:
Используется csharp
if ((Input.GetMouseButton(0)) && (weapon_type == 2))
{
  if (timer_shoot2 + 0.1f < timer)
  {
    if ((statShoot) && (ammo2_1 > 0))
    {
      ammo2_1 -= 1;
      audio.PlayOneShot(audio_shoot2, 1f);
      RaycastHit hitShoot;
      Vector3 rayShoot = transform.TransformDirection(Vector3.forward);
      if (Physics.Raycast(transform.position, rayShoot, out hitShoot, 50))
      {
        if (hitShoot.collider.tag == "Player")
        {
          GameObject enemy = hitShoot.collider.gameObject;
          GameObject parent = enemy.transform.parent.gameObject;
          netView.RPC("Damage", RPCMode.Others, parent.name, 20);
        }
      }
      if (ammo2_1 == 0)
      {
        audio.PlayOneShot(audio_none_ammo, 1f);
      }
      timer_shoot2 = timer;
    }
  }
}

[RPC]
void Damage(string nameParent, int damage)
{
  GameObject myParent = this.transform.parent.gameObject;
  if (myParent.name == nameParent)
  {
    GameObject enemy = this.transform.parent.transform.Find("Head").gameObject;
    var control_enemy = enemy.GetComponent<Script_HP>();
    control_enemy.hp -= damage;
    control_enemy.soundHit = true;
  }
}
 


Скрипт отвечающий за жизни висит на объекте с именем "Head". Проще говоря у меня игрок "Player (id игрока)", и него дочерние объекты: Head (скрипт Script_HP), FPC (скрипт стрельбы). Как решить данную проблему? Кто, что посоветует?
NickelBlack
UNец
 
Сообщения: 1
Зарегистрирован: 02 апр 2016, 23:59

Вернуться в Сеть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2