Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Ответ

Следующие ошибки возникли при попытке отправки сообщения:
Внимание! Пока вы просматривали тему, появилось несколько новых ответов (5). Возможно, вы захотите изменить свое сообщение.
Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.
Ограничения: максимум вложений в сообщении — 3 (3 осталось), максимальный размер всех файлов — 300 КБ, максимальный размер одного файла — 100 КБ
Снимите пометку с вложений, которые необходимо удалить
Перетащите файлы сюда или используйте кнопку для добавления файлов
Вложения и другие параметры
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр

Сообщения в этой теме

Автор Easyskanker
 - июля 21, 2022, 19:10
Дело №13. Кнопки.

С кнопками вроде бы упростили и сделали максимально удобно, но как выяснилось за полгода, которые я пребывал в шоке и бездействии из-за известных событий, это полностью вылетает из головы.

- В верхнем меню выбираем GameObject>>UI>>Button TextMeshPro, располагаем кнопку в нужном нам месте;

- Создадим например пустой объект (назовем Main), на который повесим основной скрипт: Ctrl+Shift+N;

- Создаем среди папок проекта папку Scripts, в ней соответственно создадим C# скрипт (смотрите, чтобы название скрипта и название основного класса в скрипте совпадали);

- Теперь, чтобы по нажатию кнопки срабатывал метод, который вы пропишете в этом скрипте, в свойствах (Inspector) кнопки найдите в разделе Button (Script) подраздел On Click(), нажмите в нем плюсик, в окошечко под Runtime Only перетащите объект Main, нажмите где написано No Function, в выпавшем списке вы сможете выбрать нужный метод из вашего скрипта.


P.S.: Чтобы установить дефолтный фокус на какой-либо кнопке, перетащите ее в окошко First Selected в разделе Event System (Script) объекта Event System, который создается автоматически вместе с кнопками.
Автор Easyskanker
 - января 28, 2021, 15:18
Дело №12. Настройка в Юнити модели, импортированной из Миксамо


- Выделяем импортированную модель. В инспекторе во вкладке Rig меняем Animation Type с Generic на Humanoid. Во вкладке Materials меняем Location на Use External Materials (Legacy)

- Для материала волос/усов/бороды меняем Rendering Mode на Fade, ставим Metallic на единицу

- Чтобы пофиксить ресницы, меняем для материала тела Rendering Mode на Cutout,  alpha cutoff 0.5

- Для одежды качаем шейдер https://gist.github.com/charlespina/7418744 , кидаем в подходящую папку проекта, назначаем материалу одежды шейдер Mixamo/Shadier, в слот Specular материала перетаскиваем соответствующую текстуру (ее название заканчивается на specular), Specular Amount ставим на единицу.


После этого танца с бубном модель должна приобрести презентабельный вид.
Автор Easyskanker
 - января 27, 2021, 10:07
Наконец, идеальный вариант. По ссылке https://github.com/Toocanzs/Vertical-Billboard скачиваем архив, распаковываем в папку Shaders нашего проекта. Создаем материал в папке Materials, назначаем материалу шейдер Toocanzs->VerticalBillboard Transparent, материал перетягиваем на наш спрайт, готово. Спрайт будет поворачиваться к игроку по горизонтальной оси и не будет наклоняться по вертикальной.
Автор Easyskanker
 - января 26, 2021, 10:42
Шейдер Billboard (с ним скрипты не нужны, просто создаете материал с текстурой спрайта и присваиваете материалу этот шейдер):


Shader "Custom/Billboard"
{
     Properties
     {
        _MainTex("Texture Image", 2D) = "white" {}
        _ScaleX("Scale X", Float) = 1.0
        _ScaleY("Scale Y", Float) = 1.0
     }
     SubShader
     {
         Tags {"Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Transparent"}
         ZWrite Off
         Blend SrcAlpha OneMinusSrcAlpha

         Pass
         {
             CGPROGRAM

             #pragma vertex vert 
             #pragma fragment frag

             // User-specified uniforms           
             uniform sampler2D _MainTex;
             uniform float _ScaleX;
             uniform float _ScaleY;

             struct vertexInput
             {
                 float4 vertex : POSITION;
                 float4 tex : TEXCOORD0;
             };
             struct vertexOutput
             {
                 float4 pos : SV_POSITION;
                 float4 tex : TEXCOORD0;
             };

             vertexOutput vert(vertexInput input)
             {
                 vertexOutput output;

                 output.pos = mul(UNITY_MATRIX_P,
                 mul(UNITY_MATRIX_MV, float4(0.0, 0.0, 0.0, 1.0))
                 + float4(input.vertex.x, input.vertex.y, 0.0, 0.0)
                 * float4(_ScaleX, _ScaleY, 1.0, 1.0));

                 output.tex = input.tex;

                 return output;
             }

             float4 frag(vertexOutput input) : COLOR
             {
                 return tex2D(_MainTex, float2(input.tex.xy));
             }

             ENDCG
         }
     }
}
Автор Easyskanker
 - сентября 25, 2020, 11:14
Дело №11. Как сделать билборд - спрайт, который всегда поворачивается к игроку

Пишем скрипт BillBoard:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BillBoard : MonoBehaviour
{
    private SpriteRenderer theSR;


    // Start is called before the first frame update
    void Start()
    {
        theSR = GetComponent<SpriteRenderer>();
        theSR.flipX = true;
    }

    // Update is called once per frame
    void Update()
    {
        transform.LookAt(PlayerController.instance.transform.position, -Vector3.forward);
    }
}


Вытаскиваем на сцену нужный спрайт, вешаем на него этот скрипт.
У вас уже должен быть скрипт PlayerController, так как поворот спрайта к игроку подразумевает вид от первого лица. Добавьте строчку в блок объявления переменных скрипта PlayerController:
public static PlayerController instance;


Добавьте следующую функцию:
private void Awake()
    {
        instance = this;
    }


Готово.
Автор Easyskanker
 - декабря 22, 2019, 18:33
Дело №10. Движение по клику мыши в 2D, часть вторая


Чтобы персонаж мог перемещаться только в определенной области, делаем следующее:

- Удаляем компонент со скриптом Dvig из спрайта 2.

- Смотрим имя спрайта 2. У меня это hatguy. Вы можете написать любое. Меняем строки Dvig

на строки

Вместо "hatguy" используйте имя вашего спрайта.

- Создаем четырехугольник: GameObject>>3D Object>>Quad. Поворачиваем к камере, вешаем на него скрипт Dvig. В свойствах четырехугольника снимаем галочку с Mesh Renderer, чтобы не был виден игроку (на первый тест можно не снимать).

- Вешаем на четырехугольник скрипт Dvig.

- Запускаем. Спрайт 2 должен перемещаться по клику строго в пределах четырехугольника, спрайт 1 всё так же следует за ним.
Автор Easyskanker
 - декабря 22, 2019, 15:53
Дело №10. Движение по клику мыши в 2D, часть первая


Создаем plane, заходим в Window>>AI>>Navigation. Выделив plane, в окне Navigation переходим на вкладку Object, ставим галочку на Navigation Static. Navigation Are оставляем по умолчанию walkable. Во вкладке Bake жмем Bake - "запекаем".

Создаем спрайт 1, вешаем на него компонент NavMeshAgent. Создаем скрипт Sledui, вешаем на спрайт 1:

Создаем спрайт 2. Спрайт 2 закидываем в Destination скрипта, который на спрайте 1.

На каждый спрайт вешаем Box Collider. Коллайдеры у нас будут трехмерными, потому что NavMesh в Юнити работает только в 3D.

В настройках камеры выбираем ортогональную проекцию, по этому уроку вешаем на нее компонент 2DPixelPerfect для корректного отображения спрайтов в любых разрешениях экрана. Поворачиваем камеру к полу и поднимаем:


Спрайты соответственно тоже поворачиваем к камере, как бы кладем на plane.

Создаем скрипт Dvig, вешаем на спрайт 2:

Когда запустим, спрайт 1 будет с определенной скоростью следовать к спрайту 2, и спрайт 2 будет мгновенно перемещаться в место, куда кликнем.
Автор Easyskanker
 - ноября 4, 2019, 17:21
Дело №9. Occlusion Culling


Эта штука нужна, чтобы рендерить только то, что видит игрок. Крайне полезно для оптимизации.

Заранее поставьте галочку Static в свойствах тех объектов, которые не планируется перемещать в самой игре.

С главной панели инструментов заходим в Window >> Rendering >> Occlusion Culling. Все параметры оставляем по умолчанию.

Жмем кнопку Bake ("запечь"):


Теперь, передвигая камеру или Character Controller в сцене, вы заметите, что все невидимые камере объекты не отображаются. Так будет и в игре.
Автор Easyskanker
 - октября 29, 2019, 17:14
Еще один полезный плагин, погребенный среди устаревших, чтобы освободить дорогу васянским поделкам на его основе в Asset Store: https://docs.unity3d.com/Packages/com.unity.2d.pixel-perfect@1.0/manual/index.html. Позволяет сохранять качество пиксель-арта при любом разрешении экрана, например игра под сеговский формат 320х224 растянется без потери качества хоть на 2560х1440, хоть на 7680×4320. Что интересно, работает хорошо и в 3D.
Автор Easyskanker
 - октября 20, 2019, 13:47
Цитата: Bhudh от октября 20, 2019, 12:57
Цитата: Easyskanker от октября 20, 2019, 01:30
Отобразятся все пакеты. Все, да не все.
Вот за такое использование кванторов надо бить. Чётко и больно. Если написано "ВСЕ", должны быть ВСЕ, безо всяких advanced.
Что это за "всё и ещё чуть-чуть"? :fp:
Сам в шоке.