• Как сделать, чтобы персонажа отталкивало в обратную сторону при получении урона в unity?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Используете ли вы физику юнити или нет, у вас есть возможность в поля класса кешировать последний вектор движения, который вы к персонажу прикладывали. Умножьте этот вектор на -1 и это будет обратное направление. Затем толкните персонажа по направлению этого вектора с некоторой силой.
    Ну или просто сделайте коллайдер шипов непроходимым, создайте физический материал с изменённым параметром bounce и киньте на шипы. Таким образом персонаж будет отпрыгивать при коллизии.
    Ответ написан
    Комментировать
  • Как экспортировать текстуру из blender в unity?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Во вкладке Project найдите файл модели и нажмите на него. Во вкладке Inspector перейдите к разделу Materials. В нём будут опции Extract Textures/Extract Materials, с их помощью вы можете вытащить из модели текстуры и использующие их материалы.
    633f6a731a17e734420893.png
    Ответ написан
    Комментировать
  • Как исправить ошибку Object reference not set to an instance?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Попробуйте сразу после строк с получением ссылок на answer1Button и answer1ButtonText передать в консоль проверку на null.
    Ответ написан
    Комментировать
  • Существует ли какая- та тула, плагин или просто сервис который бы помогал улучшить код.?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Лучший способ сходу начать писать код лучше - правильно именовать члены классов. С многими очевидными и не очень проблемами помогают статические анализаторы и такие программы как PVS. Но сам рефакторинг больше завязан на вашу интуицию разработчика. Для её наработки нужна практика на задачах, с которыми вы ещё не работали или закомы лишь поверхностно.
    Ответ написан
    Комментировать
  • Как сделать привязку и отвязку объекта по клавише?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Если вас интересует чисто нажатие:
    private void Update() {
        if (Input.GetMouseButtonDown(0)) {
            // code
        }
    }

    Если нажатие на объект с коллайдером:
    private void OnMouseDown() {
        // your code
    }

    Привязка и освобождение происходит за счёт свойства иерархии компоненты Transform:
    // привязка
    transform.parent = otherTransform;
    // освобождение
    transform.parent = null;
    Ответ написан
    Комментировать
  • Почему не работает UI у персонажа с ассета?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Проверьте по порядку:
    1) Есть ли на сцене объект Event System или одноимённый компонент?
    2) Не перекрывает ли кнопку иное изображение/надпись, с включенным Raycast Target?
    3) Привязано ли к кнопке нужное событие?

    Если всё перечисленное в порядке, а ошибка осталась, пишите в комменты.
    Ответ написан
  • UnityWebRequest не скачивает изображение интернета юнити. Что делать?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Не видя кода, могу сделать лишь три предположения:
    1) Вы не разрешили приложению доступ в интернет на телефоне
    2) Вы используете протокол HTTP
    3) Вы используете протокол HTTPS, а на сервере нет действительного SSL сертификата (самоподписывающиеся тоже не подходят)
    Если ничего не подошло, напишите в комментариях
    Ответ написан
  • Как сделать цилиндр, который будет вращаться и скидывать игрока?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Добавьте цилиндру Rigidbody и скрипт, который будет его вращать. Как-то так:

    using UnityEngine;
    
    [RequireComponent(typeof(Rigidbody))]
    public class RotateRigidbody : MonoBehaviour {
    
    	[SerializeField] private Rigidbody m_Rigidbody;
    	[SerializeField] private Vector3 m_Speed;
    
    	private void Start() {
    		m_Rigidbody = GetComponent<Rigidbody>();
    	}
    
    	private void FixedUpdate() {
    		m_Rigidbody.MoveRotation(Quaternion.Euler(m_Speed));
    	}
    }


    PS. если не хотите, чтобы он двигался, а лишь вращался, в настройках Rigidbody цилиндра поставьте три галочки на constraints-position x/y/z
    Ответ написан
    Комментировать
  • Как через PlayerPrefs сделать сохранение настроек?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Для сохранения логической переменной используйте int
    bool Fullscreen;
    //... SET
    PlayerPrefs.SetInt("Fullscreen", Fullscreen ? 1 : 0);
    //... GET
    Fullscreen = PlayerPrefs.GetInt("Fullscreen", 0) == 1; // 0 значение по умолчанию
    Ответ написан
    Комментировать
  • Как удержать игрока в игре?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Если ваша игра ещё не вышла в прод - открыть на форуме с играми свою ветку с тестовой версией игры и предложить попробовать поиграть и оставить своё мнение, также можете выложить своё приложение на itch.io и там тоже попросить в комменты написать что думают люди.

    Мой же ответ на ваш вопрос слишком сильно зависит от выбранной вами ЦА. Ведь есть стратегии, куда можно зайти, поиграть 5-20 минут, а есть такие, где около часа сессия длится. Есть стратегии, где всё просто, а есть такие, в какие играют только хардкорные олдфаги жанра.

    Если вы ориентируетесь на большинство, то это казуал/мидкор аудитория, которые готовы уделять на игровую сессию примерно до 30 минут. В мобильной стратегии такого игрока может отпугнуть: перегруженный/непонятный UI, плохая цветовая гамма, отсутствие/плохой/недостаточный отклик на важные действия игрока, однообразность геймплея, навязчивый донат, ломающий баланс донат, пинг (мультиплеер), плохой матчмейкинг (мультиплеер) читеры (мультиплеер), а также баги, влияющие на состояние потока или сохранение прогресса игрока. Это не весь список, но то, что сразу приходит в голову. Если нужно более детальное пояснение по какому-либо пункту, напишите в комменты.

    Также полезно будет посмотреть на ютубе разборы разных стратегий.
    Ответ написан
    Комментировать
  • Как правильно регистрировать столкновения и пересечения с CharacterController-ом?

    @Ezekiel4 Автор вопроса
    Охотник на пиратов и сборщик монолитов
    Если у кого возникнет такой вопрос - смотрите сообщение OnControllerColliderHit
    https://docs.unity3d.com/ScriptReference/Character...
    Ответ написан
    Комментировать
  • Каких вы знаете ютуберов которые понятно и легко учат работать в Unity?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    На первых порах вам важно понять:
    * Интерфейс программы - какая вкладка за что отвечает
    * Панель инструментов - какой инструмент что и как делает
    * Как создавать и настраивать объекты
    * Как работать с Unity Asset Store
    В этом вам поможет просто любой, ведь облажаться на этом этапе крайне сложно - Unity имеет низкий порог входа.

    Дальше вы будете изучать иструментарий - физика, освещение, материалы, интерфейс, звук, анимация, сохранения PlayerPrefs, менеджмент сцен, рельеф, частицы, поиск пути, пробилдер и т.д. Данные темы также просты, поэтому можно брать что угодно, но тут уже есть много ньюансов, которые не все знают ввиду разного опыта. Решается путём просмотра видео одной темы на 3-4 разных каналах.

    Ещё более глубокие темы, типа пайплайнов, shader graph, ads, iap и т.д. Уже через документацию и большую практику.

    Параллельно со всем этим вам нужно взять на вооружение официальную документацию по коду и мануалы Unity, а также аналогичную документацию по C#. И то и другое расписано довольно хорошо.

    Также полезный непрошенный совет - начните с малого. Не рвитесь делать убийцу гта/вов/майнкрафта. Сначала нужно развить понимание того, как всё работает. Для этого начните с простых пошаговых логических игр, вроде сапёра или крестиков-ноликов.
    Ответ написан
    1 комментарий
  • Unity, как сделать звук по кнопке (прочитайте текст)?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    По первой задаче принцип таков:
    1) при нажатии на кнопку запустить таймер
    2) если таймер дойдёт до ваших 3 секунд, то нажатие будет считаться долгим и запустится соответствующий код
    3) если произошло отпускание клавиши, то, если уже была запущена логика долгого нажатия - выключить её, а, если нет - запустить логику короткого нажатия

    По поводу второго - у источника звука есть параметр loop, влияющий за зацикливание звука, вам нужно лишь делать Play и Stop самого воспроизведения.
    Ответ написан
  • Как ограничить вращение камеры по оси x?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Есть функция Mathf.Clamp(float number, float min, float max), которая делает то, что вам нужно. Также для удобства работы, можете вынести наклон в отдельную внешнюю переменную. Выглядеть это будет как-то так:
    //... class
    float pitch;
    // ... Update
    pitch = Mathf.Clamp(pitch - mouseY, -90f, 90f);
    transform.Rotate(new Vector3(pitch, 0, 0));
    Ответ написан
    Комментировать
  • Как сделать адекватное рисование в unity?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Попробуйте заменить Update рисования корутиной с меньшей задержкой. Если не поможет, попробуйте сделать общий лимит длинны фигуры.
    Ответ написан
    Комментировать
  • Персонаж без причины начинает крутиться?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Если я правильно понял вашу проблему, попробуйте поставить на коллайдер персонажа физический материал без трения.

    Если не помогло, напишите в комменты и уточните, в момент наблюдения бага вы используете движение/поворот или просто стоите рядом и персонажа крутит?
    Ответ написан
    Комментировать
  • Как отследить объект за границами камеры?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Всё сильно зависит от конфигурации якорей и центра. Для примера, я возьму дефолтный вариант:
    6323950533beb133518050.png
    Код будет как-то так выглядеть:
    using UnityEngine;
    
    public class Example : MonoBehaviour {
    
    	// отступы, используйте, если не хотите, чтобы ваша панель спавнилась вплотную к границе
    	public float leftMargin = 0f;
    	public float rightMargin = 0f;
    	public float upMargin = 0f;
    	public float bottomMargin = 0f;
    
    	// объект для спавна
    	public RectTransform prefab;
    
    	// родительский объект для спавна в него
    	public Transform parent;
    
    	private void Update() {
    		if (Input.GetMouseButtonDown(0)) {
    			// получаем координаты клика
    			Vector2 clickPosition = Input.mousePosition;
    			// центрируем объект относительно границ экрана
    			clickPosition.x -= Screen.width / 2;
    			clickPosition.y -= Screen.height / 2;
    			// находим общие границы для спавна
    			float xMin = (prefab.sizeDelta.x - Screen.width) / 2;
    			float xMax = (Screen.width - prefab.sizeDelta.x) / 2;
    			float yMin = (prefab.sizeDelta.y - Screen.height) / 2;
    			float yMax = (Screen.height - prefab.sizeDelta.y) / 2;
    			// делаем отступы
    			xMin += leftMargin;
    			xMax -= rightMargin;
    			yMin += bottomMargin;
    			yMax -= upMargin;
    			// ограничиваем точку спавна этими границами
    			clickPosition.x = Mathf.Clamp(clickPosition.x, xMin, xMax);
    			clickPosition.y = Mathf.Clamp(clickPosition.y, yMin, yMax);
    			// спавним объект
    			var obj = Instantiate(prefab, parent);
    			// меняем его местоположение
    			obj.localPosition = clickPosition;
    		}
    	}
    }
    Ответ написан
    1 комментарий
  • Какие можете порекомендовать курсы по unity (C#) разработке игр?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Люди ходят на курсы, потому что там есть порядок изучения и подобранные материалы по данной теме, плюс у вас на какое-то время появляется ментор, который может ответить на большинство вопросов.

    Главная проблема геймдев курсов в том, что они не могут обеспечить норм зарплату ведущему, а потому вероятность, что там действительно окажется компетентный специалист с нужным вам опытом, не 100%. А даже если и будет, не факт, что он будет хорош как преподаватель.

    Если вы действительно настроены на курсы и у вас есть деньги, то ищите такие, где не нужно платить сразу за весь курс, чтобы вы могли поучиться, например, месяц, и понять для себя, комфортно ли вам в этом конкретном курсе.

    Если же с деньгами всё не так хорошо, то вы сами можете составить себе план курса, используя общедоступные планы курсов, например, топовых курсов на Udemy. Затем, останется лишь загуглить искомое название или найти соответствующее видео. А ответы на вопросы вы можете получить на этом сайте.
    Ответ написан
    Комментировать
  • Как сделать билд под mac будучи юзером на windows?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Как и сказал коментатор выше, билд под мак должен на маке делаться. Неимение оного не значит, что вы в принципе на винде не сможете это сделать, но гарантировать, что игра запустится на маке у рандомного пользователя нельзя.

    Есть несколько способов, как в инди-геймдеве это решают, не имея денег на мак:
    1) Найти знакомого, у котого за презент можно стрельнуть ноут на пару дней;
    2) Арендовать ноут на пару дней, если у вас в городе есть такие услуги;
    3) Воспользоваться услугами аренды VPS;
    4) Если в вашей стране есть закон о возврате, вы можете купить ноут и сделав всё нужное, просто вернуть его обратно без потери денег;
    5) Объединиться со знакомыми с такой же проблемой и купить мак в совместную собственность;
    6) Если ваш комп не совсем уж древний, можете установить виртуальную машину с Unity и собирать в нём.
    Ответ написан
    Комментировать
  • Под какие разрешения экранов делать игру?

    @Ezekiel4
    Охотник на пиратов и сборщик монолитов
    Экраны малого размера встречаются слишком редко, чтобы о них беспокоиться, если вы не делаете игру специально для них. Например Apple Watch Series 6 имеет разрешение 396 x 484.

    Если вы хотите обеспечить нормальный вид, проверьте, чтобы ваше приложение нормально смотрелось на девяти самых часто встречаемых разрешениях ноутбуков и смартфонов:
    1280:720
    1366:768
    1600:900
    1920:1080
    2160:1080
    2560:1440
    2960:1440
    3200:1800
    3840:2160
    Если у пользователя будет что-то другое - это его проблемы.

    Насчёт текста - у компонент UI.Text, TMPro.TextMeshPro и TMPro.TextMeshProUGUI есть возможность сделать размер текста адаптивным: у первого это свойство Best Fit, у последних двух Auto Size.
    Ответ написан
    Комментировать