Результаты поиска
| |
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 |
|
| |
|