БЛИЖНИЙ БОЙ В UNITY / 2D ШУТЕР #2 / Unity 2D Уроки Создание Игр
Вставка
- Опубліковано 29 вер 2024
- В этом видео я продолжаю совершенствовать наш 2D шутер на движке Unity, добавляю в него элементы ближнего боя. Вы научитесь делать оружие с разной скоростью атаки и радиусом, врагов, наносящих урон игроку и другие полезные штуки.
-
boosty.to/maxters - поддержать на бусти + получить доступ к исходнику этого проекта, попасть в титры к некст видосу и др.
-
ССЫЛКИ:
Скачать мою игру в GooglePlay - play.google.co...
Предыдущая часть - • КАК СОЗДАТЬ 2D ШУТЕР В...
Плейлист Unity для новичков - • Unity Уроки C# || Созд...
Информация взята с: • HOW TO MAKE 2D MELEE C...
Скачать Unity - unity3d.com/ru...
-
СОЦСЕТИ:
• Телега - t.me/m4xter
• Twitch - / maxteru
• Группа VK - maxteriada
• Discord сервер - / discord
• DonationAlerts - www.donational...
-
Сделай внутриигровой магазин , где можно было бы купить новое оружие и монеты , которые выпадают из врагов, с помощью которых можно покупать это оружие
Привет, а как сделать give в юньке??? Можно сердечко?
у меня вылетает ошибка error CS0246: The type or namespace name 'Enemy' could not be found (are you missing a using directive or an assembly reference?)
решил проблему? а то я тож туплю😅
@@CARNITORP Если скрипт врага называется Не Enemy то переименуй скрипт врага на Enemy
что делать если мне пишет что Не удалось найти тип или имя пространства имен "Enemy"
Enemy это сишарп скрипт для врага в котором указывается получение урона
При атаке противника появляется ошибка NullReferenceException с указанием на функцию OnEnemyAttack. Кто знает возможные решения проблемы?
решил проблему?
Помогите у меня почемуто враг ненаносить урон, нету анимации.
Скрипт врага:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy : MonoBehaviour
{
private float timeBtwAttack;
public float startTimeBtwAttack;
public int health;
public float speed;
public GameObject deathEffect;
public int damage;
private float stopTime;
public float startStopTime;
public float normalSpeed;
private Player player;
private Animator anim;
private void Start()
{
anim = GetComponent();
player = FindObjectOfType();
normalSpeed = speed;
}
private void Update()
{
if(stopTime
Нашёл решение проблемы?
Для тех у кого переменная Player player; не создается, вы должны указать класс название скрипта который написан для игрока, например у меня вместо private Player player; написан private Movement_Charachter player;
Спс большое
Спасибо, не мог понять в чём проблема😁
Assets\scripts\PlayerAttack.cs(26,45): error CS0246: The type or namespace name 'Enemy' could not be found (are you missing a using directive or an assembly reference?)
@@Zylem_G Название скрипта врага не Enemy, а должно быть Enemy, скорее всего поможет)
@@Zylem_G
у тебя ошибка, обновлять начальное время надо там, где жмем левой кнопкой, иначе будет бесконечно обновлять и нанести удар будет проблемно, то есть на фигурную скобку выше перенести. За старание лайк!
Блин, чувак, респект. Пол дня долбался и искал где накосячил и почему у меня не работает, а оно вон чё!
@@karliknos8704 немного внимательности и вуаля)
@@dronsan-unity7302 конкретизации тоже желательно
можете точнее сказать как это сделать?
@@cubicworld01 видос например на 3:27 ставим. и там строку 29 поднимаем на скобку выше, чтобы она была в условии нажатии кнопки мыши
СПАСИБО ЗА ЭТОТ ШЕДЕВР! ЖДУ ПРОДОЛЖЕНИЯ!!!
Макс привет у меня появилась проблема. Враг делает 2 удара подряд (второй удар делает даже если вышел из коллайдера атаки) как это исправить?
Было б неплохо добавить одну прикольную фишку
Когда у тебя остаётся мало ХП, экран становится краснее, игрок начинает медленнее ходить, медленнее атаковать. Типо уже без сил.
Но чтобы увеличивался урон. Это было бы прикольной фишкой.
@strandrey health < 4 )))
@@nextopfaxe8314 А зачем так?
@@RasFaceмне лень щас выписывать там иф хеалз
Кому нужно вот удар меча под андроид
public class PlayerAttack : MonoBehaviour
{
private float timeBtwAttack;
public float startTimeBtwAttacck;
public Transform attackPos;
public LayerMask enemy;
public float attackRange;
public int damage;
public Animator anim;
void Update()
{
if (timeBtwAttack > 0)
{
timeBtwAttack -= Time.deltaTime;
}
}
public void AttackButton() //это событие указываем в кнопке OnClick
{
if (timeBtwAttack
Бро, а как сделать так, что бы по джойстику происходил удар, а переключение оружия, по кнопке?
@@MelloMix С# для начала выучи, потом сможешь сам такие штуки делать
@@ОленаМорозова-ш1х я уже давно разобрался
А если реализовать переключение между оружиями так
public int currentGun = 1;
public GameObject gun1;
public GameObject gun2;
public GameObject gun3;
void Start()
{
currentGun = 1;
}
void Update()
{
if(Input.GetKeyDown(KeyCode.Alpha1))
{
currentGun = 1;
}
if(Input.GetKeyDown(KeyCode.Alpha2))
{
currentGun = 2;
}
if(Input.GetKeyDown(KeyCode.Alpha3))
{
currentGun = 3;
}
switch(currentGun)
{
case 1:
gun1.SetActive(true);
gun2.SetActive(false);
gun3.SetActive(false);
break;
case 2:
gun1.SetActive(false);
gun2.SetActive(true);
gun3.SetActive(false);
break;
case 3:
gun1.SetActive(false);
gun2.SetActive(false);
gun3.SetActive(true);
break;
}
}
}
Нормально ли это, или какая-то шняга?
Рабочая, но шняга)
и не понимаю, зачем ты лишний раз присвоил значение для currentGun в старте?
@@JavaSqr Забыл просто поменять по ходу
у меня враг не атакует , что делать?
+ ты исправил ошибку
Бро я отвечаю что через месяца 2 тебя уже будет как минимум 5000 подписчиков, снимаешь годноту
Я вот тоже программирование хочу изучать и нашол тебя, топ
Здравствуйте! Об этой проблеме многие говорили в комментариях, но я так и не нашел способ ее решения: Не проигрывается анимация врага и он не наносит урон игроку. Если кто-нибудь знает решение этой проблемы, прошу ответить незамедлительно. Вот код врага:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Enemy : MonoBehaviour
{
private float timeBtwAttack;
public float startTimeBtwAttack;
public int health;
public float speed;
public int damage;
private float stopTime;
public float startStopTime;
public float normalSpeed;
private Pllayer_Controll player;
private Animator anim;
public void TakeDamage(int damage)
{
stopTime = startStopTime;
health -= damage;
}
private void Start()
{
anim = GetComponent();
player = FindObjectOfType();
normalSpeed = speed;
}
private void Update()
{
if(stopTime
Помощь уже не требуется - я разобрался в чем проблема. Проверьте стоит ли галочка в поле "Is Trigger" коллайдера вашего врага.
Проблема,OnTriggerStay что когда игрок уходит enemy продолжает атаковать и доставать
Вообще в принципе через OnTrigger не очень правильно давать урон. Он как то иногда криво работает. Лучше создать переменную флоат, которая будет показывать дистанцию до игрока. И когда игрок попадает в эту дистанцию, то через время которое можно самому задать он атакует. Вот пример скрипта на противника:
public float startTimeBtwAttack;
private float timeBtwAttack;
public int damage;
public float stoppingDistance;
private Transform player;
private void Start()
{
player = GameObject.FindGameObjectWithTag("Player").transform;
timeBtwAttack = startTimeBtwAttack;
}
private void Update()
{
if(Vector2.Distance(transform.position, player.position) > stoppingDistance)
{
timeBtwAttack = startTimeBtwAttack;
}
if(timeBtwAttack
@@svizda5149 Можешь скинуть скрипт именно для этой игры в видео пожалуйста?? А то у меня не получается это воткнуть в сой скрипт, новичок ещё
@@sanchomarino
private bool _isPlayerNear; // находится ли игрок рядом
.......
private void Start()
{
.......
_isPlayerNear = false; // изначально будем считать, что игрок не рядом
}
.......
public void OnTriggerStay2D(Collider2D other)//атака игрока
{
if (other.CompareTag("Player"))
{
if(timeBtwAttack
@@pavgadget cпасибо тебе большое )
Вау круто
Object reference not set to an instance of an object
ошибку выдыёт, что делать?
как решил?
Привет! Ты классный! Я поиграл твою игру Starland, и был очень удивлён, как ты это делаешь??
Кстати, идея есть. Надеюсь поможешь, я делаю 3д шутер для андроид, ходьба будет на джойстике, и я не умею это делать, надеюсь ты скоро сделаешь про это видео)) Удачи!!!
Спасибо! По 3D не особо шарю, но управление на андроид джойстиком многие просили, сделаю как-нибудь)
@@maxters спасибо, удачи тебе!
Погнали управление под андроид!А также можно добавить больше пушек и мечей которые бы спавнились на полу!Также можно сделать всякие бонусы ,там:
Пополнить здоровье, усилить урон или скорость ну и т.д.Ты топ!
Спасибо!) Норм идеи
@Just BrO газ с скриптом на OnTriggerEnter
@@tikakalia можешь без перевода кинуть и показать таймкод где он это делает в видео.
Enemy.cs(16,13): error CS0246: The type or namespace 'Player' could not be found (are you missing a using directive or an assembly reference?) Помогите мне пожалуйста! Как исправить эту ошибку???
посмотри как называется у тебя игрок и поменяй в скрипте
Помоги пожалуста что делать если Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка CS0246 Не удалось найти тип или имя пространства имен "Enemy" (возможно, отсутствует директива using или ссылка на сборку). Assembly-CSharp
Такая же тема((
Скорее всего не создал скрипт на врага с таким же названием Enemy
enemies[i].GetComponent().TakeDamage(damage);
тут ошибка кто может исправит?
Получилось?)
@@__Lucky_net
@@my-horror-story а ещё занимаешься с Unity?
У меня в enemy ошибка. Что делать??
У меня получилось!!!!! У врага должен быть скрипт Enemy.
Лучший,после твоего видео решила начать пробовать, завтра по твоим туторам буду что то пробовать )Спасибо
У меня враг идёт,анимации работают как надо,но не снимаются Хп с врага,что могло на это повлиять?Код точно правильный,я проверял раз 5(я поставил тег на врага и на пулю,но всё равно не снимается)
Ты добавил метку в анимации?
Враг не наносит урон, что делать?
Радоваться
Исправлять код😂
2:30 тайм код для себя, что бы не забыть где код для смены оружия)))
по-моему это лучший канал по unity
ошибаешься
@@_mirai сам такой
Почему то выдаёт ошибку: Assets/Enemy.cs(16,13): error CS0246: The type or namespace name 'Player' could not be found (are you missing a using directive or an assembly reference?)
Тоже самое
Решил?
Parameter 'attack' does not exist.
UnityEngine.Animator:SetTrigger (string)
что делать?
В скрипте написан свой триггер "attack" тебе надо либо в скрипте изменить этот "attack" на своё название, либо свой триггер в аниматоре переименовать на "attack"
Привет, можете помочь пожалуйста, у меня враг улетает когда его толкаешь
Очнись это видео выложена 4 года назад...
@@TROLLGE_LEGENDARY так люди же до сих пор смотрят, допустим ты прочитал, и если бы ты был хорошим программистом, был бы шанс, что ты мог ответить на этот вопрос, а так я уже решил. Там нужно массу врага увеличить в rb
@@Bershas я через Unreal Engine, Unity делаю
@@TROLLGE_LEGENDARY что
@@Bershas Не выкупил
у меня враг урон не наносит помогите пожалуйста!!!!!!!!!!!!!!!!!!!!!!!!!
@Not Chipzel Спасибо большое !
@Not Chipzel БЛИН ТОЧНЕЕ ПЛЗ Я ТУПОЙ ПЖЖ
@@sailaostudio3133 Броо скинь пж строчку кода, а то я не понимаю((
Кста, тебя зовут не Макс, а Сэк
Редко встретишь годный канал с годным контентом. Очень интересно
ПОМОГИ! Мне надо сделать так что бы враг наносил руками а не мечом урон
Сделай меч невидимым, т.е. пустой спрайт в пару пикселей, где кулак.
Я поражаюсь насколько качественно и понятно это всё сделано,спасибо Макс тебе огромное) удачи)
Ура новое видео
ООООО, БОЖЕЕЕ. Да это же теперь настоящий, русский,слешер!! О боже. Сделай, пожалуйста, Mortal Kombat 15, прошу тебя. У тебя все получится. Ну вот представь, тебя пиарит сам Юрий Дудь, вилсаком и т.д. Maxter ты лучший!! Какой же этот меч большой, мне нравятся большие штуки.Ну ничего, это не помешает тебе стать русским Питером Мулинье. У тебя талант особый.
Лол
ЪУЪ
Хах
Помогите!!! У моего персонажа всегда разный урон. Пишу урон 1, но наносит он то 2 то 1 урон, через раз как то и не могу понять что это такое!!!!!
А на андроид можно сказать?
Триггер attack так себе решение, попробуй сделать анимацию atack длительностью секунду или больше и увидишь как анимация будет сбрасываться!
Ты каждый кадр применяешь isRunning=false если игрок не двигается - по умолчанию, игнорируя все другие состояния...
Можно конечно на выходе из tackeOf включить Has Exit Time - но это костыль, по идее если анимаций больше чем две - нужна машина состояний, а не эта дичь.
что такое машина состояний?
Дайте плиз код на enemy
ЧЕРТ, ИСКРЕННЕ СПАСИБО ТЕБЕ! Я так долго искал эту тему: оружие, скорость, и дальность. Мне прям именно это и нужно было!!!! Спасибо тебе, желаю миллиард подписчиков 😄😁🤩
1:38 что за анимация enemy, когда ее создали?
Как создать и прописать врага? не найду видео
Мне кажется или он лучше снимает чем Хауди Хо
а это нормально, что у меня хп тупо в минус уходят?
error CS0246: The type or namespace name 'Enemy' could not be found (are you missing a using directive or an assembly reference?) помоги решить ошибку плиз.
наверное очень поздно), но все же, замени Enemy на то как у тебя называется скрипт с врагом, мне помогло
у тебя походу враг в файлах по-другому назван
у меня on enemy attack срабатывает даже на расстоянии и circle colider не работает, т.е. дистанции атаки врага нет, галочка is trigger стоит
в аниматоре на стрелочке от attack до idle добавь условие attack, как на противоположной стрелки
Макс привет! Расскажи можно ли до 18 лет получить аккаунт разработчика в google play. Мне спросить больше не у кого.
создай акк с фальшивой датой рождения
@@ashotnafig да
NullReferenceException: Object reference not set to an instance of an object
Attack.Update ()
Что делать, если анимация атаки проигрывается 1 наносекунду? То есть в аниматоре видно, что она срабатывает, но завершается сразу же, а не проигрывается секунду, как должна.
нашёл как исправить?а то у меня такая же проблема
Можно скрипты?
Опапа новый видос
Люди!! А есть видео Как сделать стреляющего врага?
Искала-искала, но нашла только видео Как сделать стреляющего главного героя :(
Тоже ищу и не могу ничего толкового найти.
Сделай управление под андроид чтобы атака была от кнопки.
ребята кто поможет исправить ошибку одну с, enemies[i].GetComponent().TakeDamage(damage); пишет что "Enemy" у меня такого нет и ошибку пишет я не знаю как исправить ее
помогите пж, почему у меня нет OnAttackEneme в действиях анимации
timeBtwAttack как он у тебя бьет если он ниже условия?
Это время перезарядки...
А как ты сделал чтобы пуля разворачивалась и летела как влево так и вправо?
поэтому он и говорил, что бы оружие и пуля смотрели наверх. там с помощью Vector2.up задается поворот пули по отношению к пушки, ведь её позиция меняется только относительно игрока, а не мира как такового
ребята, а что делать если npc наносит игроку по 4 удара вне зависимости от расстояния?
Хоооорош +контент
О, видос!
У всех , когда отходишь от Enemy все-равно продолжает идти урон
хай, у меня та же проблема, как решить?
@@konus4871 Решил?
Решил?
@@madcrow1592 нет
@@konus4871 Странно, попробуйте добавить OnTriggerExit2D;
Класс
Круто! Вот бы ещё на двоих и сетевой режим рассмотреть на твоих примерах! Спасибо за труд! Нижайший поклон)
привет Maxter
можешь помочь в общём у меня почему то пюльку летят вверх хотя оружие и пульку смотрят в одну сторонну что делать
поверни оружие в фотошопе поймешь
В скрипте Bullet найди .up и смотря куда твоя картинка смотрит (left, right , down, up) это и пропиши , да поздно и что , помог же
Всё работает, только почему то не показывается этот красный круг AttackRange и его настраивать приходиться вслепую подбором. В чём может быть ошибка, кто-нибудь знает?
привет всем !
я работал над проектом:
ua-cam.com/video/bDIONz7omcI/v-deo.html
скрипт player attack и столкнулся с большой проблемой :
Assets\scripts\PlayerAttack.cs(26,45): error CS0246: The type or namespace name 'Enemy' could not be found (are you missing a using directive or an assembly reference?)
без понтия что не так помогите чем сможите могу скинуть код есле наду но он совершенно идентичный.
спасибо!
Ребят, скиньте кто нибуть код который работает, у меня пишет ошибку , показывает где ошибка , но там всё как у макса.
Help please.
The type or namespace name 'enemy' could not be found (are you missing a using directive or an assembly reference?) всем привет знаю ошибка глупая но не знаю почему она вылетает ,помогите
Помогите пожалуйста, добрые люди. Как сделать, чтобы враг останавлавался при атаке? Очень надо
Ребята. Что делать если при запуске игры у меча воспроизводится одна анимация, а потом не хочет. Как пофиксить?
А почему если я делаю у врага IsTrigger он становится прозрачным?
Что не так с кодом? using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerAttack : MonoBehaviour
{
private float timeBtwAttack;
public float startTimeBtwAttack;
public Transform attackPos;
public LayerMask enemy;
public float attackRange;
public int damage;
public Animator anim;
private void Update()
{
if(timeBtwAttack
Assets\Scripts\PlayerAtack.cs(22,44): error CS1002: ; expected пишет в консоли
@@Планбудущего anim.SetTrigger("имя"); не поставил
NullReferenceException: Object reference not set to an instance of an object
PlayerAttack.Update () (at Assets/Scripts/PlayerAttack.cs:25)
В чем проблема, у меня проигрывается анимация удара меча только после того как закончится idle или run и урон наносится тоже только после начала анимации
все работает кроме одного... запуск анимации просто вылезает ошибка о том что не содержит определения и пропущена директива using или ссылка на сборку хотя это сделано как у тебя
Имя "deathEffex" не существует в данном контексте
Что делать? Помоги пожалуйста
Создать deathEffex
Или ты когда создавал deathEffex неправильно написал
Не deathEffex а deathEffect, 100% заработает
не появляется анимации атаки врага и он сам не атакует и не наносит урон. Как исправить можно? Вроде всё правильно написал
Круто хочу скачать
Скачать?
@@epieursvelte13cirertrollferpur да
@@ВикторКузнецов-я1м у тебя на телефоне поправки?
@@epieursvelte13cirertrollferpur Ага
ТыЛУЧШИЙ!!!! Сколько я рылся в интернете нкто не мог объяснить все так ПОНЯТНО!!!!! Maxter повтоюсь ты ЛУЧШИЙ!!!!!!!!!!!!!!!!
Помоги прошу у меня почему то за врага не уменьшается но при этом он умирает я вообще уже не понимаю в чем может быть ошибка
Из-за радиуса атаки,игрок умирает когда меч до него просто докасается(без анимации) что делать?
Привет, видео топ, но хотелось-бы уроки по рисованию такой графики прикольной)
Так он это в Фотошопе рисует
Какой высокий уровень контента, лайк
Написал в точности как у вас но у меня вылетает ошибка error CS1061: 'Enemy' does not contain a definition for 'TakeDamage'
Тебе нужно в скрипт врага добавить void TakeDamage как в позапрошлом видео тогда это исчезнет
И возможно если не выйдет то измени Enemy с большой буквы на маленькую
@@Kefir14088 спасибо, получилось.
Пожалуйста
Но у меня не проигрывается анимация при нажатии
почему у меня когда монстр бет меня и я отхожу то хп продолжает снематся
#maxter помоги, как сделать кнопку атаки для андроид
Топ как и всегда
Если не сложно можешь показать как сделать жизни и получение урона? Как у тебя тут над персонажем.
А то я не понимаю не как.
Я могу сделать тока полоску жизней которая уменьшается к центру. А чтоб жизни были в виде сердец не как не получается(
За видио ролики тебе огромное спасибо
У меня после добавление start time или чет такое нече не работает у меча
А как сделать так что пр ударе он останавливаетчя но и в жто время он не может атаковать и анимация останавливается и потом снова все возобновляется,можно сказать типа фриза.
Расскажи про ECS паттерн или про Data-oriented design подход... Если знаешь что то.
Насколько я понимаю, в этих строчках мы бьём врага Enemy(в моём случае Skull), но как сделать чтобы этот же урон проходил по нескольким врагам? Допустим, поменяем мы Enemy на Skull, у нас всё работает, но если добавить такую же строчку, чтобы наносить damage ОДНОВРЕМЕННО Skull и Enemy - то урон наносится только первому... Как сделать чтобы можно было дамажить N количество соперников, а не одного?
Collider2D[] enemies = Physics2D.OverlapCircleAll(attackPos.position, attackRange, enemy);
for (int i = 0; i < enemies.Length; i++) {
enemies[i].GetComponent().TakeDamage(damage);
}
Тоже с этим столкнулся, ссылка должна быть на слой "enemy", а не на скрипт "enemy".
Понимаю, год прошел, но вдруг помните, как решали? ))
кто пользовался jave rush?
Братан видио супер даже первое, голос приятный и обучалки клас,можешь правда теперь под андроид сделать, кнопки для стрельбы упровлинее тоже и все в том роде. Заранее спасибо
Го следующий можно сделать так чтобы враги могли некоторые стрелять и побольше оружия и разнообразия и баффы канечно же
Сделай туторилал про магазин скынов.
Следующее видео: как сделать баффы
А потом создадим всю террарию
@@noelleiguess Мы одинаково мыслим...
ПоЧемУ НеТ?
Пацаны, а как сделать так чтобы оружие поворачивалось за игроком
Сделай его дочерним
!ВСЕ ЛАЙК ПОСТАВИЛИ! БЫСТРО!