@NoMiTwo

Почему при входе в разные триггеры со стороны клиента вызываются методы которые не должны срабатывать?

Использую Mirror для мультиплеера в своем проекте.
Создал игрока и два условных "Дерева". Когда игрок заходит в область дерева и нажимает "E", с дерева падает "Ветка".
Вопрос в следующем, почему когда хост бегает от одного дерева к другому и нажимает E все работает отлично, ветки спавнятся как и должны, но когда подключается клиент и делает ровно те же действия, иногда спавн ветки происходит на другом дереве (единожды). В условиях выхода с триггера ставил обьект спавна как null, но там возникают ошибки самого Mirror, некая защита, чтобы клиенты не спавнили обьекты, которых на них нет.
//Код игрока//
[Command]
    private void SpawnBranch()
    {
        GameObject spawnedBranch = Instantiate(currentTree.GetComponent<Tree>().getBranch(), currentTree.transform.position, Quaternion.identity);
        NetworkServer.Spawn(spawnedBranch);
    }

    private void OnTriggerEnter(Collider other)
    {
        // Проверяем, если игрок вошел в зону дерева
        if (other.CompareTag("Tree"))
        {
            currentTree = other.gameObject;
            canSpawn = true;
            Debug.Log("On of tree");
        }
    }

    private void OnTriggerExit(Collider other)
    {
        // Проверяем, если игрок вышел из зоны дерева
        if (other.CompareTag("Tree"))
        {
            canSpawn = false;
            Debug.Log("Out of tree");
        }
    }

//Код дерева//
[SerializeField] GameObject branchPrefab; // Префаб ветки для спавна

    public GameObject getBranch()
    {
        return branchPrefab;
    }
  • Вопрос задан
  • 47 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы