[UNITY 5] How to create case opening simulator? [1/2] (RUS)
Thanks a lot, man :). You are great to give the scripts for Non-Russian speakers :).
How are you able to Raycast Canvas Elements? How does RaycastHit2D hit = Physics2D.Raycast(Vector2.down, Vector2.up); Scale to the canvas size and in general wouldn´t it completely miss the canvas or are you using World Space Canvas? Thanks for your tutorial, it really taught me alot!
Огроменное тебе спасибо. целый месяц искал как зделать рулетку, и только у тебя лучший вариант!Ты лучший
можешь подсказать где ты взял спрайты скинов для каждого кейса?
Hi, nice work !
Can you just share the example project please ?
У меня такая проблема: скролл движется слишком медленно,игрался со значениями scrollSpeed и velocity,но вроде не помогало,при повышении scrollSpeed скорость менялась,но velocity будто всегда остаётся неизменным. Как можно изменить скорость торможения?
Сразу говорю: я еще не досмотрел урок, поэтому возможно у меня чего-то нету. Но твой вопрос тут есть
using UnityEngine;
public class CaseScript : MonoBehaviour
<
public bool OpenCase = false;
public GameObject[] prefabs;
public GameObject RoulPan;
public float ScrollSpeed = 200;
public float StopVel = 3f;
public WSprites[] WeapSpr;
void FixedUpdate()
<
if(OpenCase)
<
ScrollSpeed = Mathf.MoveTowards(ScrollSpeed, 0, StopVel * Time.deltaTime);
RoulPan.transform.localPosition += (new Vector3(ScrollSpeed, 0));
>
>
public void CaseButton(int CaseID)
<
if (!OpenCase)
<
OpenCase = true;
gameObject.SetActive(true);
CaseRandomizer();
StopVel = Random.Range(1.43f, 1.65f);
>
>
private void CaseRandomizer()
<
for (int a = 0; a 5 років тому
Попробуй изменить скролспид не в скрипте а в настройках обьекта к которому прикрепил данный скрипт(Справа, там же где префабы цепляешь)
Как Сделать Симулятор Кейсов С Выпадением Карт, Имеющие Рандомный Шанс Выпадения В Unity
В этом ролике я сделал симулятор кейсов (сундуков). Выпадение разных объектов из кейсов, в моём случае из кейсов будут выпадать карты. И у каждой карты есть свой шанс выпадения. Также в этом ролике я сделал окно коллекции, в котором можно посмотреть выпавшие карты. Думаю ролик будет полезен, а также можете скачать скрипты в телеге)
00:00 Вступление
00:36 Знакомство с элементами
02:26 Карты
03:02 Menu Manager
05:27 Case Manager
08:54 Card Manager
Новые видео на канале Jupiter
- Делаю — Дизайн — Монтаж — Биты На Заказ
- Угарный Мультфильм "Бытие Пумпока"
- Гайд По Mirror Мультиплееру В Unity 2Д
Подписывайтесь на наш Telegram канал! @thewikihow открыть Мониторим видео тренды 24/7
Простой лутбокс на Unity
Чуть больше года изучаю движок и ЯП. А в последние пол года решил вести канал на ютуб и показывать какие-нибудь прикольные штуки, например как сделать такой лутбокс. Контент конечно не уникальный, но кому-нибудь может быть полезным и конечно он будет полезным мне, для саморазвития и мотивации.
Так вот кто портит жизнь игрокам погаными "механиками сюрпризов"! Народ,
Так, блять! Не порть подрастающее поколение игроделов.
Клин клином вышибают) Чем больше микротранзакций в играх, тем быстрее они канут в Лету)
EA, Ubisoft, Activision, Take Two и прочие мобильные помойки:
Да, если люди станут бессмертными и запретить рожать новых, а так нет.
Но чем больше "товарищей" делает игры на такой монетизации, тем все же меньше адекватная конкуренция для определенной аудитории)
Если поколение не будет знать про лут боксы оно же потеряет целую эпоху
Этот пост набрал 24 лайков. Друзья, сам Господь покинул наш мир.
Ой, ну да ладно вам. Что в этом плохого? Будто все местные геймдевелоперы создают бесплатные игры!) Тем более посыл поста и видео совсем в другом.
Ага. Только я хорошо знаю как относятся люди к лутбоксам.
Хотя пофиг, они всё равно донатят в Геншине.
Фигово знаешь, люди их брали иб удут брать, всегда. Остальное на совести разраба, а люди это люди не ищи в них разумности и адекватности.
Где ты тут нашел девелоперов?) Их тут по пальцам правой ноги наверное можно пересчитать.
Если показываешь, как делать прикольные штуки, мог бы хотя бы постараться сделать хороший код, а то люди, которые только начали изучать c# и unity, насмотревшись таких видео, будут с полной уверенностью, что у них нормальный год, заниматься фигней. Ошибки в коде: 1. Публичные поля. 2. Рейкаст зачем-то происходит в апдейте, когда есть встроенные в юнити методы. 3. Из предыдущего следует, что куча проверок тоже проводится а апдейте. 4. Работа со строками — очень небезопасная история, надо создавать класс с константами. 5. Куча полей гейм-обджектов. Если убрать комментарии, то становится совершенно непонятно, какой обьект за что отвечает. 6. Комментарии. Надо писать код так, чтобы они были не нужны.
От части ты прав, но от части. Я не учу программированию и не кричу что у меня нормальный и правильный код. Данное видео — это просто самый простой пайплайн создания подобного эффекта и этот эффект создается как самостоятельный проект, от этого ему пофиг на безопасность и переусложнять не считаю нужным. Если будет сделано все по "канонам", новичок посмотрит ничего не поймет и выключит видео, а тому кто шарит, нафиг подобные видео не нужны.
Я не хочу разводить спор, повторюсь, ты прав от части и надеюсь ты поймешь то что я хотел сказать)
А понять рейкаст в апдейте с кучей проверок проще, чем понимать 4 разных метода, каждый из которых делает что-то конкретное? Причем эти методы в юнити уже с понятным названием, тогда как hit.name == gameObject.name — не очевидное название. Просвящать людей, которые только начинают заниматься юнити — это хорошая история, которая дает возможность даже тем, кто не хочет в геймдев, реализовывать свои задумки, но при этом учить таких людей плохим практикам — плохая история, которая будет потом вредить этим самым людям даже в реализации своих задумок, не говоря уже про желание попасть в геймдев
А-я-яй, сравнение строк через ==
А че поделаешь, если все эти новомодные свистелки и перделки типа внедрения зависимостей в Unity сделаны через публичные поля ¯\_(ツ)_/¯
Таков уж дизайн. Они даже этого и не скрывают — во всех официальных туториалах кругом публичные поля, которые публичными полями и погоняют.
4. Работа со строками — очень небезопасная история, надо создавать класс с константами.
Снова особенность дизайна Unity, т.к. строки используются при работе того же аниматора.
Так-то конечно это не удобно и иногда действительно лучше использовать списки строковых констант (тот же энумератор) в срециально отведенном месте, вот только это будут те же самые строки 🙂 Вместо строк лучше сразу оперировать хэшами, так как доступ к анимациям осуществляется через хэш-таблицу: какой-нибудь animator.SetBool("Idle", false) сначала вызовет метод StringToHash и уже по хэшу будет искать ссылку на нужную анимацию, так что можно хэши вычислить заранее и вызывать методы уже по хэшу.
Так что эту часть может и лучше совсем иначе сделать. Правда это совсем простое видео, похоже для совсем начинающих.
6. Комментарии. Надо писать код так, чтобы они были не нужны.
Самодокументирующийся код — фикция и оправдание лени. Сложный и эффективный алгоритм в любом случае придется документировать (разными способами), иначе через пол года никто не разберет что происходит и никакие говорящие имена функций и переменных не помогут.
Я вот, например, хз как можно сделать самодокументируемым код примерно такого типа как ниже:
float Q_sqrt(float number )
<
float x2 = number * 0.5F;
float y = number;
long i = * ( long * ) &y;
i = 0x5F1FFFF9 — ( i >> 1 );
y = * ( float * ) &i;
y *= 0.703952253F * (2.38924456F — x2 * y * y);
return y;
>
А никак. Он обязательно должен содержать комментарии и хоть какие-то пояснения, ну и какую-нибудь ссылочку, например вот сюда
Эт еще простой пример, который можно легко нагуглить. А когда дело касается численных методов там обычно все выглядит как сплошная ж0па и переписать более понятным образом не получиться без ущерба производительности.
Так что тут только приучаться своевременно писать подробные комментарии, документацию и автодоки (что уже внедрено в язык), и конечно же не забывать их во время обновлять. Хотя мы все конечно же знаем как всем лениво это делать ( ͡° ͜ʖ ͡°)
На Гитхабе лежит исходный код для бортового управляющего компьютера Аполлона-11 и там комментариев больше чем собственно кода, зато по ним сразу видно где и какие костыли были приделаны погроммистами, чтобы американцы все же смогли долететь до Луны.
Так-то понятно что лучше писать код как можно понятнее и логичнее.
Но бывает народ и в другие крайности начинает впадать и херачит имена методов и переменных на пол экрана, что-нибудь в стиле void AnotherMethodThatDoesSomethingAfterRepeatedInitialization() 🙂
Впрочем это к видео отношение уже не имеет, тут совсем простой пример для новичков где комментарии просто поясняют "Я аниматор", "Я лучик", "А я криведко" — они вообще лишние, итак очевидно и без комментариев, что animator это аниматор лутбокса 🙂
2. Рейкаст зачем-то происходит в апдейте, когда есть встроенные в юнити методы.
Если это связано с обработкой ввода (а это тот самый случай), то рейкаст и должен происходить в Update(). Тем более там к lootObject не прикреплено никакое твердое тело, и никакой активной работы с физическими объектами не происходит, только проверка, пересекает ли луч сферический коллайдер.
Разве что я бы поменял очередность — сначала событие мыши и только затем рэйкастинг.
когда есть встроенные в юнити методы.
Эт какие еще встроенные методы? Там в примере и используется один из таких встроенных методов камеры ScreenPointToRay который и предназначен для того, чтобы бросать луч из камеры по направлению указатели мыши и получить все пересечения по его ходу. В руководстве Unity3D именно так и рекомендуется делать, кек.
Ну или можно написать свой велосипед через координаты (и в итоге дойти до того, чтобы начать повторять функционал физического движка, кек).
Отвечаю:
1. Утверждение, что внедрение зависимостей происходит через публичные поля является удобной отговоркой, но при этом не является правдой. https://docs.unity3d.com/ScriptReference/SerializeField.html
2. Для работы со строками необходимо использовать какие-то поля хотя бы для того, чтобы искать ошибку в одном месте, а не пытаться вспомнить, где еще что-либо запускалось через строку.
3. Прошу прощения, но алгоритм в вашем примере — явный говнокод. Откуда магические числа? Почему есть какие-то переменные из 1 буквы или из 1 буквы и цифры? Возможно, если написать алгоритм нормально, через полгода он останется понятным?
4. Вам не кажется, что если лучь пересекает сфеерический КОЛЛАЙДЕР, то твердое тело все же присутствует. И это дает возможность перейти к следующему пункту
5. https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseEnter.html а так же другие подобные могут сделать так, что луч в апдейте с кучей проверок кидать не надо.
Так же рекомендую изучать предметную область перед тем, как оправдывать практики плохого написания кода
Увы, но [SerializeField] внезапно разрушает инкапсуляцию. Дело в том, что приватные поля и не должны сериализовываться со стороны — что обозначено как private касается только своего класса и никого более. Однако ж волшебный атрибут [SerializeField] позволяет обходить это досадное ограничение и работать с приватным полем как будто бы оно публичное. Причем это костыль от Unity Technologies в обход NET.
Если уж быть последовательным то надо следовать семантике: приватное значит приватное, если же вдруг начинают дергать приватные поля всякими хаками, то наверное имеет смысл остановиться, задуматься и переосмыслить дизайн.
Для работы со строками необходимо использовать какие-то поля хотя бы для того, чтобы искать ошибку в одном месте, а не пытаться вспомнить, где еще что-либо запускалось через строку.
Зависит от задач. Что делать со строками имен для аниматора я уже сказал: при инициализации один раз получить и сохранить все хэши от строк, а дальше работать только с ними. В других случаях может быть по-другому, например, какие-то строки, порой лучше хранить вообще отдельно
Откуда магические числа?
А вы статью прочитайте на которую я дал ссылку и там будет написано откуда такие числа берутся. Это всего лишь особенности метода Ньютона и машинного представления чисел с плавающей запятой одинарной точности по стандарту IEEE 754. Конкретно для этого алгоритма таких чисел уже известно дофига (в моем примере самое новое из найденных).
В общем совет тут только один:
рекомендую изучать предметную область перед тем, как оправдывать практики плохого написания кода
Возможно, если написать алгоритм нормально, через полгода он останется понятным?
А Вы его не напишите нормально, он именно такой каким и должен быть, и известен еще с 80-90 годов. Любые другие возможные варианты будут работать медленно и нафиг никому в таком случае не сдались. Именно таким образом извлечение обратного квадратного корня в SSE 2 и реализовано.
Операции извлечения квадратного корня вообще не очень простые, вот другой пример математической библиотеки от Сан Микросистем:
Вам не кажется, что если лучь пересекает сфеерический КОЛЛАЙДЕР, то твердое тело все же присутствует. И это дает возможность перейти к следующему пункту
Нет не кажется. Т.к. коллайдеры и твёрдые тела для физического движка разные сущности: тверды тела нужны для динамики — применение сил и перемещение, а коллайдеры используются для проверки взаимной коллизии. Если к игровому объекту прицеплены коллайдер, но отсутствует компонент твердого тела, то такие коллайдеры в Unity называются статичными
PhysX один хрен хранит все коллайдеры в AABB-дереве и они конечно же участвуют в проверке коллизий.
Разница заключается только в том, что движок предполагает, что статичные коллайдеры не будут перемещаться и они будут исключены из того шага, где физический движок применяет все силы и перемещает все твердотельные объекты, так что некоторые события не будут генерироваться. Но Physics.Raycast(ray, out hit) конечно же найдет пересечения, т.к. для этого ему всего лишь надо обойти это самое AABB-дерево и вытащить оттуда все коллайдеры, которые встретятся на его пути (и не помеченные как IgnoreRaycast).
Только я бы не советовал статичные коллайдеры перемещать — физический движок охренеет от такого обращения. Да и глючные они. Так что иногда все же лучше прикреплять еще и RigidBody и помечать его как кинематическое на тот случай если объект захочет все же подвигаться.
Внезапно это тоже самое. Например, если объект принадлежит к слою Ignore Raycast, то есть исключается из рэйкастинга, то это событие не сгенерируется, о чем кстати совершенно недвусмысленно написано в мануале, только надо колёсико мыши до конца текста прокрутить и дочитать.
Case Open Simulator Unity Source Code
Case Open Simulator — the best solution for get a lot of installs and profit in a short time!
A simulator of everyone’s favorite gambling addiction! Unbox some of the most exotic weapon and knife skins in this brand new game template.
Open the latest cases with simulated funds to try and obtain the ever illusive rare knives and trade up all. Includes achievements and a ranking system. Template include parsing Steam nickname and profile avatar, professional inventory where you can sort and sell items.
This template ready to monetization, need only change rewarded video id.
Please, if you have questions or wishes, write us a comment!
Features
Cross Platform (Android, iOS);
Unity ADS;
Video Tutorial;
Easy for reskin;
Achievements;
Rank system;
10 start game cases;
Inventory (save, sell, sort items);
Sound effects and UI animations, etc.
Requirements
This template builded in Unity Engine 5.3.6f1 (I recommend using this version for good working)
Instructions
Reskin video tutorial included in description file. THIS
| Category | App Templates / Unity / Complete Projects / Action |
| First release | 16 February 2017 |
| Last update | 16 February 2017 |
| Operating Systems | Unity 5.0, iOS 10.0, Android 7.0, Unity 5.5, Unity 5.5, iOS 8.0, iOS 9.0, Android 4.0, Android 5.0, Android 6.0 |
| Files included | .cs, .csproj, .dll, .unityproj, .prefab |
| Tags | template , game , Unity , monetization , simulator , Open , ready , steam , case |

![]()
Earn 10% of all purchases made by new customers you refer to Codester.
Join our Affiliate program