Среда, 24 Апреля 2024, 16:31

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Записи участника » MaxEggplant [8]
Результаты поиска
MaxEggplantДата: Воскресенье, 22 Ноября 2020, 15:01 | Сообщение # 1 | Тема: Смещение при установке объекта на сцену
был не раз
Сейчас нет на сайте
Возникла проблема:
Собираю рамку из кусочков, заранее заданного размера.
Правая граница должна находиться на 0 по Х, тем не менее, по какой-то причине вся конструкция почему-то смещается влево и вперед на фиксированное значение, вне зависимости от размеров рамки.
Может быть у меня замылился глаз, и я просто уже не вижу строку, в которой сам когда-то присвоил это смещение.
Иначе - не догадываюсь в чем причина, от слова совсем. Хелп!
Ниже приведено изображение результата работы кода и сам код.
На картинке выделены оси X и Z для лучшей наглядности.

КАРТИНКА (пристите, сюда изображение прикрепляться не захотело)

Код

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CaseBuilder : MonoBehaviour
{
    public int _caseWidth;
    public int _caseHeight;

    public float _caseBlockSize = 0.5f;

    public string _CaseBlocksPath; //путь к префабам кейса
    public string _hinge; //префаб петли
    public string _handle; //префаб рукояти
    public string _angle; //префаб блока угла
    public string _wall; //префаб блока стены
    public string _floor; //префаб блока дна

    public Vector3 _startBuildPoint = Vector3.zero;

    public Vector3 _upLeft = Vector3.zero;
    public Vector3 _upRight = Vector3.up * 90;
    public Vector3 _downLeft = Vector3.up * 270;
    public Vector3 _downRight = Vector3.up * 180;

    public void BuildCase()
    {
        GameObject Case = SetGameObject(Vector3.zero, Vector3.one, "case");
        Case.AddComponent<CaseEngine>();
        BuildParts(SetGameObject(Vector3.zero, Vector3.one, "TopPart", Case.transform).transform,
            new Vector3(-_caseWidth * _caseBlockSize, 0, _caseHeight * _caseBlockSize));
    }
    public GameObject SetGameObject(Vector3 pos = new Vector3(), Vector3 size = new Vector3(), string name = "obj", Transform parent = null)
    {
        GameObject Obj = new GameObject(name);
        Obj.transform.SetParent(parent);
        Obj.transform.position = pos;
        Obj.transform.localScale = size;
        return Obj;
    }
    public GameObject LoadGameObject(string prefName, string name, Vector3 pos = new Vector3(), Vector3 rot = new Vector3(), Transform parrent = null)
    {
        GameObject InstObj = Instantiate(Resources.Load(_CaseBlocksPath + "/" + prefName), pos, Quaternion.identity, parrent) as GameObject;
        if (rot != Vector3.zero) InstObj.transform.rotation = Quaternion.Euler(rot);
        else InstObj.transform.rotation = Quaternion.Euler(Vector3.zero);
        if (name != null) InstObj.name = name;
        return InstObj;
    }
    public void BuildParts(Transform parrent, Vector3 startPos)
    {
        //_startBuildPoint = startPos + new Vector3(-_caseWidth * _caseBlockSize, 0, _caseHeight * _caseBlockSize);
        Vector3 BlockPosition = startPos;
        for (int y = 0; y < _caseHeight; y++)
        {
            for (int x = 0; x < _caseWidth; x++)
            {
                LoadGameObject(ChangeBlockShapePath(x, y), "Block", BlockPosition, ChangeBlockRotation(x, y), parrent);
                BlockPosition.x += _caseBlockSize;
            }
            BlockPosition.x = startPos.x;
            BlockPosition.z -= _caseBlockSize;
        }
    }
    public string ChangeBlockShapePath(int x, int y) //принимает (x,y) позицию, возвращает ссылку на блок соответствующий переданной позиции
    {
        string prefName = _wall;
        if ((x == 0 || x == _caseWidth - 1) && (y == 0 || y == _caseHeight - 1))
            prefName = _angle;
        else if ((x > 0 && x < _caseWidth - 1) && (y > 0 && y < _caseHeight - 1))
            prefName = _floor;
        else prefName = _wall;

        return prefName;
    }
    public Vector3 ChangeBlockRotation(int x, int y) //(осторожно, лапша)принимает (x,y) позицию, возвращает поворот объекта
    {
        Vector3 Rotation = Vector3.zero;
        if (!((x > 0 && x < _caseWidth - 1) && (y > 0 && y < _caseHeight - 1)))
        {
            if (x == 0) Rotation = _upLeft;
            if (y == 0) Rotation = _upRight;
            if (x == _caseWidth - 1) Rotation = _downRight;
            if (y == _caseHeight - 1) Rotation = _downLeft;

        }
        if ((x < 1 || x > _caseWidth - 2) && (y < 1 || y > _caseHeight - 2))
        {

            if (x == 0)
            {
                if (y == 0) Rotation = _upLeft;
                if (y >= _caseWidth - 1) Rotation = _downLeft;
            }
            else
            if (x == _caseWidth - 1)
            {

                if (y == 0) Rotation = _upRight;
                if (y >= _caseWidth - 1) Rotation = _downRight;
            }

        }
        return Rotation;
    }
}


Сообщение отредактировал MaxEggplant - Воскресенье, 22 Ноября 2020, 15:03
MaxEggplantДата: Воскресенье, 22 Ноября 2020, 14:33 | Сообщение # 2 | Тема: Не изменяется обзор камеры
был не раз
Сейчас нет на сайте
Цитата drcrack ()
VR?
Все оказалось проще. Камеры использовал две, для отрисовки некоторых объектов поверх других. На одной из них забыл убрать тэг главной камеры, в итоге при исполнении скомпилированного проекта все ломалось, т.к. от просто подбирал не ту камеру
MaxEggplantДата: Вторник, 03 Ноября 2020, 19:21 | Сообщение # 3 | Тема: Не изменяется обзор камеры
был не раз
Сейчас нет на сайте
В процессе игры необходимо изменять угол обзора камеры, и в редакторе все работает прекрасно, но в билде на андроид по какой-то причине изменение обзора не происходит;
Вот код:
Код

if (_isMoving)
        {
            if (_camera.fieldOfView < 80f) _camera.fieldOfView += (80f - _camera.fieldOfView) / 2 * (Time.deltaTime * 5);
            _teil.SetActive(true);
        }
        else
        {
            _runSound.Stop();
            _runStartSound.Stop();
            if (_camera.fieldOfView > 71.5f) _camera.fieldOfView -= (_camera.fieldOfView - 71.5f) / 2 * (Time.deltaTime * 5);
            _secondCamera.fieldOfView = _camera.fieldOfView;
            _teil.SetActive(false);
        }


PC не бейте за такую странную реализацию плавного изменения
MaxEggplantДата: Вторник, 28 Августа 2018, 22:43 | Сообщение # 4 | Тема: Проблемы с обработкой "Microphone" на Android устройствах
был не раз
Сейчас нет на сайте
Проблема заключается в следующем:
При ретрансляции звука получаемого с микрофона и перенаправляемого в AudioSouce в редакторе Unity задержка минимальна, при билде под Windows картина та же, однако, когда приложение выполняется на Android устройстве, выходит так, что перед началом воспроизведения имеется задержка в размере времени буферизации. Подскажите, в чем проблема, и можно ли это исправить? Код простейший:
Код

[RequireComponent (typeof (AudioSource))]
public class TestInput : MonoBehaviour
{
    public string _selectedDevice;
    public AudioSource _audioSource;

    void Start()
    {
        _audioSource = GetComponent<AudioSource>();
        _selectedDevice = Microphone.devices[0].ToString();
        _audioSource.clip = Microphone.Start(_selectedDevice, true, 10, AudioSettings.outputSampleRate);
        _audioSource.Play();
    }

    
}          
MaxEggplantДата: Вторник, 27 Февраля 2018, 17:44 | Сообщение # 5 | Тема: Проблемки с интеграцией сервисов Google Play Games.
был не раз
Сейчас нет на сайте
Цитата seaman ()
Эх! Рискну дать ссылку:

Спасибо! На сколько я понял, IdToken - запрашивается, если в плагине проекта указан идентификатор клиента OAuth2? И если его не указывать, то всё будет хорошо?
MaxEggplantДата: Вторник, 27 Февраля 2018, 14:22 | Сообщение # 6 | Тема: Проблемки с интеграцией сервисов Google Play Games.
был не раз
Сейчас нет на сайте
Уже достаточно много времени потратил на решение этой проблемы. Как любой лентяй, я конечно же начал интеграцию с просмотров туториалов на ютубчике. Столкнувшись с проблемой, указанной в описании темы излазил многие форумы, находил там советы, но их применение не решило проблему. Решив уже наконец поработать головой, я направился к официальным ресурсам Гугла и Юньки. Создал новый проект, сделал всё по пунктам, но кажется, снова где-то накосячил.
Проблема осталась.
Сразу скажу, что в консоли гугл плей всё настроено, апк загружен в альфа-выпуск. Тестеры назначены.
Ошибок в консоль плагин не пишет, в коде авторизации их вроде тоже нет, там тоже всё тихо.
Уже замучился с этим разбираться, по этому по правде говоря, ищу человека, который за ручку проведет по всему этому болоту, и ткнет носом куда надо.
Заранее благодарен всем, кто отзовется на зов утопающего!


Сообщение отредактировал MaxEggplant - Вторник, 27 Февраля 2018, 14:25
MaxEggplantДата: Воскресенье, 05 Февраля 2017, 14:52 | Сообщение # 7 | Тема: Проблемы с клиентом при игре по сети.
был не раз
Сейчас нет на сайте
К примеру, при выстреле должен запускаться таймер отвечающий за промежуток между этими самыми выстрелами, но если на хосте скрпт работает великолепно, то с клиентом начинает происходить какая-то дичь, выстрелы производятся буквально на каждый кадр. Так же, пуля из ствола направляется в точку, указанную райкастом идущим из камеры (вид от третьего лица), и с этим на хосте так же нет проблем, но клиент упрямо направляет пули только вперед, вне зависимости от того, куда целится камера. С начала думал, что проблема в том, что для разделения игроков на объектах не принадлежащих локальному игроку отключаются некоторые скрипты, но нет, это же происходит только на локальном клиенте. Проверено и перепроверено. Думаю проблемы так же не в скриптах, так как хост работает так, как задумано.
В консоли вылезают предупреждения
Цитата

Trying to send command for object without authority.
UnityEngine.Networking.NetworkBehaviour:SendCommandInternal(NetworkWriter, Int32, String)
BulletMove:CallCmdInstnt()
BulletMove:FixedUpdate() (at Assets/Prefabs/Player data/BulletMove.cs:67)

На сколько я понимаю, это предупреждение выскакивает из-за того, что объект пули, создаваемый при выстреле, имеет компонент Network Identity, но не является префабом игрока. Возможно я ошибаюсь.
Прошу вашей помощи в решении этой проблемы!

Добавлено (05 февраля 2017, 14:52)
---------------------------------------------
Примечательно, что при удалении атрибута Command перед функцией отвечающей за выстрел, всё нормализуется. Правда естественно, что в этом случае выстрел не передаётся другим.

MaxEggplantДата: Суббота, 04 Февраля 2017, 23:35 | Сообщение # 8 | Тема: Unity не хочет выполнять функцию, если перед ней стоит
был не раз
Сейчас нет на сайте
Unity не хочет выполнять функцию, если перед ней стоит [Command]
Вот пример кода:
Код

        [Command]
    void CmdInstnt ()
    {
  GameObject go = (GameObject)Instantiate(префаб, Hit.point, Quaternion.FromToRotation(Vector3.up, Hit.normal));

  NetworkServer.Spawn(go);
    }


Если удалить [Command], всё работает (естественно только на стороне клиента вызывающего функцию).
Прошу вашей помощи!


Сообщение отредактировал MaxEggplant - Воскресенье, 05 Февраля 2017, 01:40
Форум игроделов » Записи участника » MaxEggplant [8]
  • Страница 1 из 1
  • 1
Поиск:

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