Как сделать 2D-платформер на Unity | #3

แชร์
ฝัง
  • เผยแพร่เมื่อ 11 พ.ย. 2024

ความคิดเห็น • 567

  • @culon4775
    @culon4775 3 ปีที่แล้ว +176

    NullReferenceException: Object reference not set to an instance of an object
    enemy.OnCollisionEnter2D (UnityEngine.Collision2D collision) (at Assets/scripts/enemy.cs:9)
    Если у вас выходит такая ошибка, тогда нужно в классе Hero, в методе Awake добавить строчку Instance = this;

    • @atlassdev2481
      @atlassdev2481  3 ปีที่แล้ว +24

      Да-да, забыл в видео инициализацию показать

    • @culon4775
      @culon4775 3 ปีที่แล้ว +12

      @@atlassdev2481 на самом деле это круто что не показал, что бы мы тоже включали мозги а не только под все готовенькое. Это очень полезно.

    • @atlassdev2481
      @atlassdev2481  3 ปีที่แล้ว +21

      @@culon4775 Здесь лучше было показать, ибо сам паттерн мы вообще вскользь затронули. Я бы сам, честно, не догадался бы, что его и инициализировать ещё надо)

    • @blackriver243
      @blackriver243 3 ปีที่แล้ว +6

      спасибо бодьшое

    • @culon4775
      @culon4775 3 ปีที่แล้ว +5

      @@blackriver243 ой как приятно и неожиданно

  • @maximka3651
    @maximka3651 3 ปีที่แล้ว +33

    Первая тысяча, так держать. Продолжай делать видео. Хочу что бы у тебя появилась монетизация на канале, что бы тебе самому нравилось выпускать ролики и уроки по Unity. Спасибо тебе)

    • @cludimusic4256
      @cludimusic4256 3 ปีที่แล้ว +1

      ВООБЩЕТО 7К

    • @MrGallus
      @MrGallus 3 ปีที่แล้ว +1

      За 6 месяцев 10к набрал? Нифига...

    • @БексултанАбдураимов-к9б
      @БексултанАбдураимов-к9б 2 ปีที่แล้ว +1

      пацаны уже 22к

    • @Илья-ж7м6ч
      @Илья-ж7м6ч หลายเดือนก่อน

      Умоляю, ответь, что значит "переназначить метод GetDamage" ? Умоляю

  • @andriikovalskyi9871
    @andriikovalskyi9871 3 ปีที่แล้ว +12

    Ура !Новое видео, ждал с нетерпением. Желаю удачи в росте канала!

  • @РоманВоронин-н7и
    @РоманВоронин-н7и ปีที่แล้ว +1

    Это уроок уже с подвохом. В конце придется самому закрепить материал и сделать анимацию для ходячего мостра. Автор молодец, недописал в код ровно то, что уже посилам сделать самому. Все получилось, спасибо.

    • @WhiskasCorn
      @WhiskasCorn 11 หลายเดือนก่อน +1

      ЗАЗАЗА,ГЕНИЙ. просто поленился,он все делает на отцепись

  • @БогданКравець-ь4ж
    @БогданКравець-ь4ж 3 ปีที่แล้ว +62

    Было бы все шикарно если бы показывал полностью код. А так все чётко и понятно. Коды где то можно взять?

  • @fruitykilla3375
    @fruitykilla3375 3 ปีที่แล้ว +6

    Поздравляю с тысячей, продолжай в том же духе!

  • @vasya8696
    @vasya8696 3 ปีที่แล้ว +11

    Уже тысяча? Поздравляю! Ощущение что недавно нашёл твой аккаунт с 40 с чем-то подписчиков😁
    (я самый проблемный подписчик, вечно какие-то ошибки и баги были🤣)

    • @futuremadness
      @futuremadness 3 ปีที่แล้ว +4

      не ты один))))))))

  • @Neolith54
    @Neolith54 2 ปีที่แล้ว +31

    Решил задачу как сделать чтобы враг смотрел по направлению движения, полный код в конце комментария. Вообще очень рекомендую когда у вас возникает проблема с компилятором, ошибками и тд, не поленитесь пересмотреть еще раз ролик, свой код, и обязательно глянуть в гугл. Порой бывает полезно подумать что вы уже где то реализовали функционал разворота на примере Hero, то надо подумать как это сделать для Walking monster. Первое на ум приходит просто скопировать строчку "sprite.flipX = direction.x > 0.0f;" но не помогло, если не использовать штуку под названием Awake. В итоге простым обдумыванием решение лежащее на поверхности, было реализовано для врага.
    Вот полный листинг:
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class WalkingMonster : Entity
    {
    private float speed = 1.5f;
    private Vector3 direction;
    private SpriteRenderer sprite;
    private void Awake()
    {
    sprite = GetComponentInChildren();
    }
    private void Start()
    {
    direction = transform.right;
    }
    private void Move()
    {
    Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position + transform.up * 0.1f + transform.right * direction.x * 0.7f, 0.1f);
    if (colliders.Length > 0) direction *= -1f;
    transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, Time.deltaTime);
    sprite.flipX = direction.x > 0.0f;
    }
    private void Update()
    {
    Move();
    }
    private void OnCollisionEnter2D(Collision2D collision)
    {
    if (collision.gameObject == Hero.Instance.gameObject)
    {
    Hero.Instance.GetDamage();
    }
    }
    }

    • @tagir2496
      @tagir2496 2 ปีที่แล้ว +2

      он у меня идет только в одну сторону(он поворачивается в другую сторону и сразу обратно, а стены там нет), что делать?

    • @Neolith54
      @Neolith54 2 ปีที่แล้ว +1

      @@tagir2496 внимательно проверить код? Или скопировать на худой конец, этот точно рабочий)

    • @Илья-ж7м6ч
      @Илья-ж7м6ч หลายเดือนก่อน

      Умоляю, ответь, что значит "переназначить метод GetDamage" ? Умоляю

  • @dmitriykuzminlvm34
    @dmitriykuzminlvm34 ปีที่แล้ว +7

    Для тех кто столкнулся с такой проблемой: движущийся враг впирается в одну стену или дергаётся на месте туда сюда.
    Я сам столкнулся с такой проблемой и вот что мне помогло
    1) Нужно сверить код, именно такой вариант кода запустился у меня:
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class WalkingMonster : Entity
    {
    private float speed = 0.5f;
    private Vector3 direction;
    private SpriteRenderer sprite;
    private void Awake() // Метод, который вызывается при создании объекта
    {
    sprite = GetComponentInChildren(); // Присваивает переменной sprite компонент SpriteRenderer, который находится в дочернем объекте
    }
    private void Start() // Метод, который вызывается при запуске сцены
    {
    direction = transform.right; // Присваивает переменной direction значение вектора, указывающего вправо относительно объекта
    }
    private void Move() // Метод, который отвечает за перемещение врага
    {
    Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position + transform.up * 0.1f + transform.right * direction.x * 0.7f, 0.1f); // Создает массив colliders и заполняет его всеми коллайдерами, которые пересекаются с кругом заданного радиуса и центра. Центр круга находится немного выше и впереди относительно объекта.
    if (colliders.Length > 0) direction *= -1f; // Если массив colliders не пустой, то меняет направление врага на противоположное
    transform.Translate(direction * speed * Time.deltaTime); // Перемещает объект на заданное расстояние в заданном направлении с учетом скорости и времени кадра
    sprite.flipX = direction.x > 0.0f; // Отражает спрайт по горизонтали в зависимости от направления
    }
    private void Update() // Метод, который вызывается каждый кадр
    {
    Move(); // Вызывает метод Move
    }
    private void OnCollisionEnter2D(Collision2D collision) // Метод, который вызывается при столкновении с другим коллайдером
    {
    if (collision.gameObject == Hero.Instance.gameObject) // Если объект столкновения является героем
    {
    Hero.Instance.GetDamage(); // Вызывает метод GetDamage у героя
    }
    }
    }
    Если вы его вставите и у вас почему то не заработает, то предлагаю сделать следующее: расставьте стенки подальше друг от друга
    Так же можете поиграться со значением 0.7, подогнать под себя.
    Подобные манипуляции по идее должны вам помочь. Конкретно мне они помогли. Так же не забывайте про перезапуск юнити, это на самом деле тоже может решить некоторые проблемы. Надею это кому нибудь поможет

    • @Илья-ж7м6ч
      @Илья-ж7м6ч หลายเดือนก่อน

      Умоляю, ответь, что значит "переназначить метод GetDamage" ? Умоляю

    • @dmitriykuzminlvm34
      @dmitriykuzminlvm34 หลายเดือนก่อน

      @@Илья-ж7м6ч не совсем понял, это типо проблема с которой ты столкнулся или что? У меня просто про переназначения ни слова нет

    • @Илья-ж7м6ч
      @Илья-ж7м6ч หลายเดือนก่อน

      @@dmitriykuzminlvm34 на 3:10 говорят, и я не понимаю, что нужно сделать, тоесть присвоеть класс Entity, это значит вместо монобиваур написать Entity, а про GetDamage я не понял

    • @dmitriykuzminlvm34
      @dmitriykuzminlvm34 หลายเดือนก่อน

      ​@@Илья-ж7м6ч
      Наследование класса - это способ создать новый класс, который получает все свойства и методы от другого класса (базового класса).
      Переопределение метода - это способ изменить поведение метода в дочернем классе, сохранив при этом возможность использовать базовую функциональность.
      Таким образом, унаследование класса Entity позволяет Hero использовать общую функциональность, а также добавлять или изменять её по мере необходимости.
      Мы в Entity методу GetDamage присваиваем модификатор virtual, именно он позволяет в дочерних классах переназначить метод, используем это т.к. все сущности разные.
      С помощью virtual мы позволяем переназначить метод в дочерних классах (у героя у монстров)
      То есть это как глобальная заготовка для сущностей (герой и монстры).
      Именно поэтому в классе Hero мы в методе GetDamage дописываем модификатор override, тем самым переназначая метод, то есть меняя его конкретно для класса Hero
      То есть глобально существует метод GetDamage в Entity (который наследуют), но для каждого класса мы GetDamage меняем соответствующе, если это требуется. У каждой сущности будет разное получение урона
      Просто повтори код в видео и всё должно работать

    • @Xopionoma
      @Xopionoma หลายเดือนก่อน

      все работает при значении 0.9, однако это достаточно много, монстр разворачивается задолго до столкновения со стенкой. Нет ли способа как то решить эту проблему. Подойдут даже самые конченные костыли

  • @karasbrawl9311
    @karasbrawl9311 3 ปีที่แล้ว +7

    О, враги это круто. Нужно только сделать атаку, чтобы их дубасить можно было😄

    • @Илья-ж7м6ч
      @Илья-ж7м6ч หลายเดือนก่อน

      Умоляю, ответь, что значит "переназначить метод GetDamage" ? Умоляю

    • @illia4868
      @illia4868 22 วันที่ผ่านมา

      @@Илья-ж7м6ч Это значит переопределить его в классе, который наследуется от базового класса, где этот метод был определён. То есть написать
      "public override void GetDamage()"
      и унаследовать весь класс Hero от Entity
      "public class Hero : Entity"

  • @999bloodmoon
    @999bloodmoon 2 ปีที่แล้ว +13

    Очень полезный урок, был бы если бы автор объяснял то что делает

    • @honouredoneug
      @honouredoneug ปีที่แล้ว +1

      включай голову и делай сам, это задумка автора)

  • @СтасЗыгмантович
    @СтасЗыгмантович 3 ปีที่แล้ว +2

    3 тысячи. Поздравляю! Третий урок уже посложнее. Спасибо за труд

  • @DedHacan
    @DedHacan 3 ปีที่แล้ว +10

    кстати, если у объекта разное количество полигонов, то коллайдер2Д можно выбирать в зависимоси от формы обьекта, чтобы не бегать по "невидимым стенам"

    • @DedHacan
      @DedHacan 3 ปีที่แล้ว +3

      например у пенька я использовал Polygon Collider 2D, а у червя Capsule Collider 2D, потратил пару секунд на замену, но зато ощутимо приятнее стало)

    • @DedHacan
      @DedHacan 3 ปีที่แล้ว +13

      еще возник вопрос, как то можно анимировать коллайдер под анимацию обьекта? потому что когда червь в сжимается вниз - стенки его коллайдера остаются неподвижными ведь

  • @vovamatsenko1364
    @vovamatsenko1364 3 ปีที่แล้ว +21

    Помогите решить проблему:
    NullReferenceException: Object reference not set to an instance of an object
    Worm.OnCollisionEnter2D (UnityEngine.Collision2D collision) (at Assets/Scripts/Worm.cs:9)
    Такое же с Wood

    • @vovamatsenko1364
      @vovamatsenko1364 3 ปีที่แล้ว +2

      Код такой же

    • @atlassdev2481
      @atlassdev2481  3 ปีที่แล้ว +29

      Попробуй в скрипте Hero, в методе Awake добавить строчку: Instance = this; Я почему-то забыл еë в видео показать

    • @vovamatsenko1364
      @vovamatsenko1364 3 ปีที่แล้ว +4

      @@atlassdev2481 Спасибо,теперь заработало

    • @POLCODERA
      @POLCODERA 3 ปีที่แล้ว +15

      @@atlassdev2481 Хорошо было бы закреплять такие моменты в комментариях, чтобы не искать решение проблемы по 10 минут. (Просто совет)

    • @АлександрВыпадко
      @АлександрВыпадко 3 ปีที่แล้ว +1

      @@atlassdev2481привет, объясни за что отвечает эта строчка.

  • @rooffall
    @rooffall 2 ปีที่แล้ว +15

    Увидел что для многих проблема развернуть спрайт при движении в другую сторону.
    В файле с вашим монстром добавьте такие строчки:
    private void Awake()
    {
    sprite = GetComponentInChildren();
    }
    перед private void Start()
    и в Move() вставьте строчку:
    sprite.flipX = dir.x < 0.0f;

  • @gabennewel1177
    @gabennewel1177 2 ปีที่แล้ว +1

    Очень крутая игра. У тебя всё просто и понятно. Спасибо за видео)

  • @crazypowers
    @crazypowers 3 ปีที่แล้ว +1

    спасибо за информативность в видео, вот бы все так делали

  • @deus.7335
    @deus.7335 3 ปีที่แล้ว +1

    Круто. Спасибо Бро.

  • @GoodCraftingYT
    @GoodCraftingYT 3 ปีที่แล้ว +7

    Норм, но с последним мобом проблема: двигается на пару пикселей туда и назад, хотя препядствий рядом никаких нет, и двигается со скоростью улитки, ты никуда переменную скорости не применил, хотя и создал. Такое ощущение, что моб коллайдиься с землей и не может определится в какую сторону идти
    Edit: поставила отзеркаливание текстуры при смене направления, и все стало ясно - бокс коллайдится с землей и моб 25 раз в секунду меняет направление

    • @Merikkk
      @Merikkk 2 ปีที่แล้ว +1

      У меня такая же проблема сейчас, как ты её решила?

    • @bananchikyes7316
      @bananchikyes7316 2 ปีที่แล้ว +1

      а как исправить?

    • @segasg2250
      @segasg2250 2 ปีที่แล้ว +2

      private Vector3 overlapCirclePosition;
      private float overlapCircleRadius = 0.1f;
      private void Move() {
      overlapCirclePosition = transform.position + transform.up * 0.5f + transform.right * direction.x * 0.7f;
      Collider2D[] colliders = Physics2D.OverlapCircleAll(overlapCirclePosition, overlapCircleRadius);
      if (colliders.Length > 0) {
      if (colliders[0].gameObject != Hero.Instance.gameObject) {
      direction *= -1f;
      }
      }
      transform.position = Vector3.MoveTowards(transform.position, transform.position + direction, speed * Time.deltaTime);
      spriteRenderer.flipX = direction.x >= 0.0f;
      }
      private void OnDrawGizmos() {
      Gizmos.color = Color.red;
      Gizmos.DrawSphere(overlapCirclePosition, overlapCircleRadius);
      }

  • @ddipperq
    @ddipperq 2 ปีที่แล้ว +2

    а уже 21 тысяча)

  • @dmetergraumann9458
    @dmetergraumann9458 3 ปีที่แล้ว +17

    Вопрос: зачем для игрока/платформы/врага создавать пустой объект, а потом крепить ему дочерний спрайт? Если создать сразу объект игрока спрайтом, и на него же вешать коллайдер и RigidBody, то реализация в общем не меняется, так даже проще. P.S: один из наиболее понятных курсов для игродела с опытом в 3 дня, спасибо!

  • @MrThrash90
    @MrThrash90 2 ปีที่แล้ว +2

    Синглтон - это же объект, который может существовать в единственном экземпляре на сцене, а не возможность класса вернуть самого себя

  • @mhntgfmjhg
    @mhntgfmjhg 3 ปีที่แล้ว +18

    Почему ты не показываешь в конце полностью код?

  • @Александр-з8ю4л
    @Александр-з8ю4л 5 หลายเดือนก่อน +2

    Ошибка Assets\Scripts\Obstacle.cs(11,18): error CS0117: 'Hero' does not contain a definition for 'Instanse'

  • @danacralive6360
    @danacralive6360 ปีที่แล้ว +3

    Я добавил override и у меня ошибка выскочила что делать?
    Ошибка CS0115 "Hero.GetDamage()": не найден метод, пригодный для переопределения.

    • @axotn1k
      @axotn1k 11 หลายเดือนก่อน +1

      У меня та же проблема

  • @Artesmay_Official
    @Artesmay_Official 2 ปีที่แล้ว

    Хороший ролик. Сяпиба!

  • @maryzakharenko
    @maryzakharenko 2 ปีที่แล้ว +7

    Если у кого-то не ходит подвижный монстр, там в условии надо поставить Length>1 вместо Length>0

    • @maryzakharenko
      @maryzakharenko 2 ปีที่แล้ว +1

      И еще надо в MoveTowards в последнем аргументе Time.deltaTime умножить на speed

    • @НастенаПрунь
      @НастенаПрунь 2 ปีที่แล้ว

      Дай Бог тебе здоровья!

  • @bahamengame
    @bahamengame ปีที่แล้ว +8

    Если у кого-то не определяется класс Entity, то вам нужно создать отдельный скрипт с этим классом.
    Дальше если не работает override в скрипте Hero, то вам наверху нужно поменять наследование public class Hero : Entity

    • @dobriy_kot5091
      @dobriy_kot5091 ปีที่แล้ว +1

      А как создать скрипт в этим классом?

    • @_tioh4ik_630
      @_tioh4ik_630 ปีที่แล้ว +3

      @bahamen1009 спасибо тебе добрый человек!😊

  • @Aizerechkaa_
    @Aizerechkaa_ 3 ปีที่แล้ว +2

    Лайк👍👍👍👍👍 очень круто

  • @LuPi_So2
    @LuPi_So2 3 ปีที่แล้ว +4

    А я подписан с 180-190 подписчиков)

  • @ibah3624
    @ibah3624 3 ปีที่แล้ว +1

    отлично, очень хорошо объясняешь, всё понятно

    • @WhiskasCorn
      @WhiskasCorn 11 หลายเดือนก่อน

      ... piZDABOL

  • @АлександрЛис-ы3о
    @АлександрЛис-ы3о 3 ปีที่แล้ว +10

    Я пол часа разбираю одно видео , так как я новичок .
    Автор будь добр понятней объясняй , весь день потратил на твои видео а в итоги одни ошибки, хоть я и делаю точь в точь!

    • @johntolerancelore6870
      @johntolerancelore6870 3 ปีที่แล้ว

      Видимо не делаешь точь в точь.

    • @InnocentyTheUnstopable
      @InnocentyTheUnstopable 3 ปีที่แล้ว +5

      Так это единственно верный способ обучения. Делаешь ошибки, читаешь, ищешь решения, исправляешь, растёшь.

    • @GetmodDima
      @GetmodDima 27 วันที่ผ่านมา

      Я с этим полностью согласен

  • @perfect7412
    @perfect7412 2 ปีที่แล้ว +10

    Можно пж работающий код на последнего врага он у меня упирается в правую стенку и не поворачивается :(

    • @axtung5238
      @axtung5238 2 ปีที่แล้ว +4

      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;
      public class Enemy : Entity
      {
      private float speed = 3f;
      private Vector3 dir;
      private SpriteRenderer sprite;
      private void Start()
      {
      dir = transform.right;
      }
      private void Update()
      {
      Move();
      }
      private void Move()
      {
      Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position + transform.up * 0.1f + transform.right * dir.x * 0.7f, 0.1f);
      if (colliders.Length > 0) dir *= -1;
      {
      transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, Time.deltaTime);
      }
      }
      private void OnCollisionEnter2D(Collision2D collision)
      {
      if (collision.gameObject == Sonic.Instance.gameObject)
      {
      Sonic.Instance.GetDamage();
      }
      }
      }

    • @m.player5022
      @m.player5022 2 ปีที่แล้ว +1

      @@axtung5238 Спасибо

  • @veit3443
    @veit3443 3 ปีที่แล้ว +1

    Спасибо за такой качественный контент 🤩

  • @gedrolit5277
    @gedrolit5277 3 ปีที่แล้ว +4

    А ты будешь добавлять стрельбу чтобы убивать этих монстров (2д шутер, будет прикольно)

  • @alexkrat5562
    @alexkrat5562 3 ปีที่แล้ว +15

    Создаем "без override"
    Слово оверрайд остаётся 🤷‍♂️

    • @ВасилийТипа-ы1ц
      @ВасилийТипа-ы1ц ปีที่แล้ว +3

      У меня какой то баг с этим override если его убрать то 3 ошибки, а если оставить то 1. Подскажи, пожалуйста как это испраить.

    • @ImNatsukiSubaru
      @ImNatsukiSubaru ปีที่แล้ว +1

      @@ВасилийТипа-ы1ц нашел ответ на проблему?просто я не могу в скрипте для ловушки использовать Hero из-за того,что он защищен

    • @kihawi1627
      @kihawi1627 ปีที่แล้ว

      @@ВасилийТипа-ы1ц пофиксил?

    • @kihawi1627
      @kihawi1627 ปีที่แล้ว

      @@ВасилийТипа-ы1ц невозможно переопределить метод getdamage

  • @Sladzhi
    @Sladzhi 3 ปีที่แล้ว +1

    Спасибо большое за ролики, скажи, вот будет толк если я сделаю по гайду всю игру и буду её разбирать? Или своё что-то делать и так проще? C# я учил по SimpleCode, дошел до классов. Это вот все мои знания.

  • @machi3131
    @machi3131 3 ปีที่แล้ว +11

    Пожалуйста, подскажи. В твоём курсе уже было показано как сделать адекватное передвижение? И как долго ты программируешь?

    • @atlassdev2481
      @atlassdev2481  3 ปีที่แล้ว +5

      Передвижение добавляли в первой части. Серьезно заниматься программированием начал около 7-8 месяцев назад

  • @Ктоя-г4у
    @Ктоя-г4у 2 ปีที่แล้ว +5

    Assets/Scenes/HERO/Hero.cs(58,26): error CS0115: 'Hero.GetDamage()': no suitable method found to override

    • @pashakiller228
      @pashakiller228 2 ปีที่แล้ว

      ну что у меня тоже самое

  • @allrom9855
    @allrom9855 3 ปีที่แล้ว +4

    Спасибо за видео!, Потихоньку осваиваю :))
    Да, появился небольшой вопрос, а вот эти земляные блоки (Ground), их как-то можно поворачивать? Так чтобы они были под углом, создавая небольшой подъем или спуск ? Получается так, что бы сам колаидер был под углом

    • @НикитаРябухин-ю4о
      @НикитаРябухин-ю4о 3 ปีที่แล้ว +2

      Ну есть такая штука Rotation ( с англ. поворот ). берёшь объект, к примеру то же самый блок земли, и вписываешь значение в параметр rotation по оси Z. Если есть дети у этого объекта, то они тоже будут поворачиваться вслед.

    • @allrom9855
      @allrom9855 3 ปีที่แล้ว +1

      @@НикитаРябухин-ю4о Спасибо большое !!!

  • @artemmatveev3435
    @artemmatveev3435 2 ปีที่แล้ว +4

    1:47 У меня вылезает ошибка что не поставил точку с запятой, а когда ставлю вылезают другие ошибки. Можете скинуть код я разберусь что не так

  • @ИгорьХмелев-ь3ч
    @ИгорьХмелев-ь3ч 2 ปีที่แล้ว +1

    Хорошие видео всё доступно, но ты не рассказываешь о нюансах. Более чем уверен, что многие столкнулись с проблемой, что не камера движется за персонажем, а наоборот ( со 2-й части видео). Например, расскажи почему ты на препятствие сделал ( kinematic ) Rigidbody. А так ролики достойные. Но так же показуй плз фичи по сложней

  • @KABINAD1
    @KABINAD1 ปีที่แล้ว +2

    Помогите пожалуйста у меня такая ошибка
    Can't add script component 'Walking Monster'

    • @mamatgalimbetov3960
      @mamatgalimbetov3960 ปีที่แล้ว

      У меня тож такая ж проблема CS1026:
      CC1513:

  • @gregory7344
    @gregory7344 3 ปีที่แล้ว +7

    всё хорошо, НО! С последним мобом(тот что патрулирует) проблемы: 1) не хочет разворачиваться, как ни крути, что я только не делал... Смотрит в одну сторону. 2) анимация для этого кадра, тоже самое, не получается её сделать, я и гуглил и пересмотрел 1 и 2 урок... HELP!!!

    • @dimexplay6862
      @dimexplay6862 2 ปีที่แล้ว

      Кто-нибудь решил эту проблему?

    • @TheAniKmax
      @TheAniKmax 2 ปีที่แล้ว

      @@dimexplay6862 У меня вообще не ходил этот монстрик, пока я не сдвинул точки как у героя в первом уроке. Но зачем это нужно, я так пока и не понял. Может кто-то подскажет зачем это ... ?

    • @odin7539
      @odin7539 2 ปีที่แล้ว

      @@TheAniKmax проверяется метод isGrounded, на котором завязаны как анимации, так и паттерны движения

    • @odin7539
      @odin7539 2 ปีที่แล้ว

      по крайней мере, частично

  • @nigjya_channel6867
    @nigjya_channel6867 3 ปีที่แล้ว +3

    error CS0246: The type or namespace name 'Player' could not be found (are you missing a using directive or an assembly reference?) (название объекта игрока не "Hero" а "Player"

    • @DjastDuet
      @DjastDuet 3 ปีที่แล้ว +1

      Он проверяет название класса в скрипте

  • @tagir2496
    @tagir2496 2 ปีที่แล้ว +5

    что делать если ходящий монстр идет только в одну сторону, ударяется о стену и поворачивается

  • @lifeisagame5990
    @lifeisagame5990 3 ปีที่แล้ว +14

    Может кому поможет. У меня двигающийся враг стал правильно работать только когда я прописал -0.1f вместо 0,1f в методе Move
    private void Move()
    {
    Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position + transform.up * 0.1f + transform.right * dir.x * 0.7f, -0.1f);
    if (colliders.Length > 0) dir *= -1f;
    transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, Time.deltaTime);
    Автору спасибо

    • @C4pitanMaster
      @C4pitanMaster 2 ปีที่แล้ว +1

      Genius! Genius! Genius!

    • @SashaFloks
      @SashaFloks ปีที่แล้ว

      спасибо большое бро помог

  • @mikhailvasilev233
    @mikhailvasilev233 ปีที่แล้ว +2

    Не ну это капец.Спасибо за попытку конечно,но тут нифига не видно куда писать код(например Damage и минус жизни у игрока).В DebugLog не отображаются жизни червя и игрока.И вообще,первые два видоса были информативными ,а тут нифига.

  • @troleibus1178
    @troleibus1178 3 ปีที่แล้ว +6

    слишком много упущений в видео. А конкретно NullReferenceException: Object reference not set to an instance of an object, о которой все пишут, Semicolon after method or accessor block is not valid, о которой тоже пишут, но не все, но я все это худо бедно исправил, обратившись к коментам, но башка окончательно выключилась, когда я присмотрелся к скрипту Worm и оказалось, что он унаследован от Entity, а не от MoneBehaviour, об этом вроде не было сказано.

    • @troleibus1178
      @troleibus1178 3 ปีที่แล้ว +6

      Мне кажется, что тебе стоит писать скрипт синхронно с записью видео, а не показывать написанное, так будет меньше шансов что-то упустить

    • @bahamengame
      @bahamengame ปีที่แล้ว

      У меня вообще Entity не наследуется... Монобехавор работает, а энтити, подчеркнуто, ну и как следствие ничего не работает.... В чем может быть проблема, не подскажите?

  • @hitenstyle258
    @hitenstyle258 3 หลายเดือนก่อน

    Закрытый элемент "Snake.OnCollisionEnter2D" не используется.IDE0051 как это исправить? червь просто не умирает.

  • @replaner
    @replaner 3 ปีที่แล้ว +1

    Круто! Где научился так программировать (не просто циклы да условия, а синглтоны, оверрайды)?

  • @DedHacan
    @DedHacan 3 ปีที่แล้ว +6

    если вдруг у кого то червь пропадает под слоями, то в спрайте червя измените пункт "Order in Layer" с нуля на 1 и он встанет на первый план

  • @honkaiworldhaxxor480
    @honkaiworldhaxxor480 3 ปีที่แล้ว +4

    Помогите, как это решить?
    "hero.GetDamage()": не найден метод, пригодный для переопределения.
    Имя "lives" не существует в текущем контексте.
    Имя "lives" не существует в текущем контексте.
    Имя "lives" не существует в текущем контексте.
    Неоднозначный вызов следующих методов или свойств: "hero.GetDamage()" и "hero.GetDamage()" Assembly-Тип "hero" уже определяет член "GetDamage" с такими же типами параметров.
    Вот код
    public override void GetDamage()
    {

    lives -= 1;
    Debug.Log(lives);
    }
    А это собственно сам Worm
    public class Worm : Entity
    {
    private void OnCollisionEnter2D(Collision2D collision)
    {
    if (collision.gameObject == hero.Instance.gameObject)
    {
    hero.Instance.GetDamage();
    lives--;
    Debug.Log("у червяка " + lives);
    }
    if (lives < 1);
    Die();
    }
    }
    Делал все по видео

  • @mrbatman7951
    @mrbatman7951 3 ปีที่แล้ว +4

    Вот проверку игрока и земли, подробней объяснил бы. а то вот тупенькому "я " не очень понятно, как именно работает...
    Именно откуда ты берешь числа для проверки чего-либо, если у меня другой размер спрайта, и можно ли сделать проверку сделать видимым? чтоб понять какую именно область я проверяю,
    И когда я иду в стенку, то перс неадекватно дергаетсяXD. я кое как сделал проверку земли.
    И из за того что перс дергается, как бы немного заходя в стенку, срабатывает проверка моей земли, прыжок становится доступным.
    Таким образом можно так сказать "паркурить".
    Можете объяснить плиз, как можно сделать адекватную "стену", как бы странно это не звучало)

  • @СергейИгоревич-х8э
    @СергейИгоревич-х8э 3 ปีที่แล้ว

    Красава

  • @МаксТарасов-г4ь
    @МаксТарасов-г4ь 2 ปีที่แล้ว +9

    У кого на месте вертится 'монстер', просто попробуйте размер его уменьшить ( самой модели, SCALE 1;1;1 на 0.5;0.5;0.5)

  • @hochyspat3671
    @hochyspat3671 ปีที่แล้ว +3

    gпоследний монстр не движется в другую сторону при столкновении( подскажите, как исправить пожалуйста

    • @kipariin3986
      @kipariin3986 4 หลายเดือนก่อน

      Та же проблема.. Нашли решение???

  • @GuidanceGurusS
    @GuidanceGurusS ปีที่แล้ว +4

    Всё хорошо, но у меня выходила ошибка с кодом Obstacle. Даже после попытки инициализации.
    NullReferenceException: Object reference not set to an instance of an object
    Obstacle.OnCollisionEnter2D (UnityEngine.Collision2D collision) (at Assets/scripts/Obstacle.cs:9)
    После просмотра комментариев я понял что нужно вставить просто в классе Hero в методе Awake добавить строку Instance = this;
    Я додумался тестировать и наконец нашёл решение для тех у кого такая же проблэма.
    В итоге сейчас я сделал private void Start() { Instance = this; } - У меня всё начало работать. Так что если у кого не выходит, принимайте.

  • @DartRagnes
    @DartRagnes 2 ปีที่แล้ว +24

    Вот рабочий код, по крайней мере у меня
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    public class WalkingMonster : Entity
    {
    private float speed = 0.1f;
    private Vector3 dir;
    private SpriteRenderer sprite;
    private Rigidbody2D rb;

    private void Awake()
    {
    sprite = GetComponentInChildren();
    }

    private void Start()
    {
    dir = transform.right;
    }

    private void Update()
    {

    Move();
    }
    private void Move()
    {

    Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position + transform.up * 0.1f + transform.right * dir.x * 0.7f, 0.1f);
    if (colliders.Length > 0) dir *= -1;
    transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, Time.deltaTime);
    sprite.flipX = dir.x > 0.0f;
    }
    private void OnCollisionEnter2D(Collision2D collision)
    {
    if (collision.gameObject == player.Instance.gameObject)
    {
    player.Instance.GetDamage();
    }
    }
    }

    • @matthewtrip5356
      @matthewtrip5356 ปีที่แล้ว +2

      Спасибо большое, всю голову сломал с этим разворотом.

  • @АндрейКонвисар-э5е
    @АндрейКонвисар-э5е 2 ปีที่แล้ว +3

    куда сам код Entity добавлять?

  • @ДимкаБутузов
    @ДимкаБутузов 3 ปีที่แล้ว +7

    А можно пожалуйста полный скрипт

  • @pr1zergodsunchained181
    @pr1zergodsunchained181 3 ปีที่แล้ว +2

    Как не пробовал, повернуть монстра не получается Движущегося. и видео 1 пересмотрел.

  • @vovamatsenko1364
    @vovamatsenko1364 3 ปีที่แล้ว +4

    Объясняешь лучше чем Дударь

  • @NeverLight
    @NeverLight 3 ปีที่แล้ว +1

    уже 2k чувак))

  • @Studio-hv2qm
    @Studio-hv2qm 3 ปีที่แล้ว +5

    Здравствуйте! Крутые видео! Большое спасибо! Подскажите, пожалуйста, как решить мою ошибку. Делал по Вашему примеру, но при касании главного героя и монстров выходит ошибка NullReferenceException. Заранее большое спасибо!

  • @vam2da
    @vam2da 3 ปีที่แล้ว +4

    Привет , помоги пожалуйста , строка GetDamage подчеркивается красным (При добавлении уже возможности смерти червяка) . Как переназначить GetDamage

  • @mikelir1889
    @mikelir1889 2 ปีที่แล้ว +1

    продвигаю видео

  • @zakatun9491
    @zakatun9491 3 ปีที่แล้ว +4

    А ответь пажалуйста
    Если ты учился на программиста
    Вот если ты учился то там хорошо с практикой научат ?

    • @atlassdev2481
      @atlassdev2481  3 ปีที่แล้ว +3

      Если ты про универ, то я пока что на 1 курсе, тут ещë никакой практики не было. А на всяких курсах и т.п. никогда не учился

    • @zakatun9491
      @zakatun9491 3 ปีที่แล้ว +1

      @@atlassdev2481 а в школе как надо учится чтоб на программиста идти?

    • @atlassdev2481
      @atlassdev2481  3 ปีที่แล้ว +2

      @@zakatun9491 Ты имеешь ввиду оценки? Они не особо решают что-то. Лучше в своë свободное время изучать язык, алгоритмы, ну и конкретные технологии (unity, .net, и т.д.)

    • @zakatun9491
      @zakatun9491 3 ปีที่แล้ว +1

      @@atlassdev2481 спасибо ты очень меня выручаешь ( в плане вопросов )

  • @СашаЧаманкин
    @СашаЧаманкин 9 หลายเดือนก่อน

    Здравствуйте, такую игру можно интегрировать в телеграм бота с играми?

  • @capplay5602
    @capplay5602 3 ปีที่แล้ว +5

    Привет чувак видео огонь давно хотел такого видео ото в игре скучно без врагов

    • @capplay5602
      @capplay5602 3 ปีที่แล้ว

      Точно подписка

  • @cor4ik871
    @cor4ik871 2 ปีที่แล้ว +3

    у кого в скрипте неподвижного врага метод Die не работает то просто измените сыллку с MonoBehaivor на Entity

    • @adsnormal1195
      @adsnormal1195 2 ปีที่แล้ว

      Спасибо большое

  • @maxsmith6925
    @maxsmith6925 2 ปีที่แล้ว +2

    Тоже станно в скрипте Hero пишу public override GetDamage. а он мне ошибку возвращает. С чем это может быть связанно?

    • @HAXMHE_HUK
      @HAXMHE_HUK 2 ปีที่แล้ว

      Override там не нужен

    • @HAXMHE_HUK
      @HAXMHE_HUK 2 ปีที่แล้ว

      Он будет нужен в будущем как он и сказал писать без него пока что

    • @HAXMHE_HUK
      @HAXMHE_HUK 2 ปีที่แล้ว

      Оверайд удали

  • @DmytroHor
    @DmytroHor 2 ปีที่แล้ว +1

    3:09 - што ето значит ??? Подскажите пожалуста

  • @Яухожуясделалвсёчтомог
    @Яухожуясделалвсёчтомог 3 ปีที่แล้ว +1

    Помогите error cs1061 'Hero' does not contain a definition for 'GetDamage' and no accessible extension metod 'GetDamage'

  • @solikfanny5437
    @solikfanny5437 ปีที่แล้ว +1

    @Atlass Dev помоги пожалуйста у меня подвижный монстр просто идет в одну сторону и не разворачивается

    • @kipariin3986
      @kipariin3986 4 หลายเดือนก่อน +1

      Та же проблема, нашли решение?

    • @lnd.3nk479
      @lnd.3nk479 3 หลายเดือนก่อน

      У кого проблема с движущимся врагом, вот возможные причины и варианты, которые помогли мне:
      Проверьте скрипт на новом объекте с базовым коллайдером (в одну клетку). Если ничего не работает, скорее всего, проблема в синтаксисе или в создании персонажа.
      Если у вас всё работает на базовом спрайте (в одну клетку), тогда, скорее всего, проблема в размере коллайдера. Чтобы проверить, в чём заключается проблема, предлагаю добавить в код метод OnDrawGizmos, который создаёт сферу. Это поможет визуально понять, где находится OverlapCircleAll:
      csharp
      Копировать код
      private void OnDrawGizmos()
      {
      // Цвет круга
      Gizmos.color = Color.red;
      // Позиция центра круга, где 0.1f - вертикальная позиция, а 1.3f - горизонтальная позиция круга
      Vector3 circleCenter = transform.position + transform.up * 0.1f + transform.right * direction.x * 1.3f;
      // Радиус круга
      float circleRadius = 0.1f;
      // Сам метод, который рисует круг
      Gizmos.DrawWireSphere(circleCenter, circleRadius);
      }
      Учтите, высота должна быть на одном уровне с препятствием по вертикали, а горизонтальная позиция должна выходить за зону хитбокса спрайта, то есть за границы коллайдера. Если это не поможет исправить проблему, то хотя бы поможет визуально понять, в чём дело!
      Если что-то не так, поправьте в комментариях.

  • @NormanJazzStyle
    @NormanJazzStyle 3 ปีที่แล้ว

    оТЛИЧНО!

  • @sobchenyuk
    @sobchenyuk 2 ปีที่แล้ว +1

    Вам нехватает
    void Awake()
    {
    if (Instance == null)
    {
    Instance = this;
    }
    }

  • @programwars1591
    @programwars1591 3 ปีที่แล้ว +3

    Извини, но ты не правильно сделал колышек. Он не работает. Если что это не моя ошибка так как я 10 раз всё проверял по буквам. И всё из-за того что скрипт obstacle не знает кто такой hero хотя ты и сказал что после добавления одной строчки он всё будет знать

    • @bluekofin
      @bluekofin 3 ปีที่แล้ว +1

      Это у тебя ошибка, у меня всё работает кроме того движущегося монстра, просто он не показал код как его флипать вот когда я пытаюсь игра не работает

  • @xvostguitar
    @xvostguitar 2 ปีที่แล้ว +1

    ну я не пойму всё норм это ходячий монстер идёт но он не разворачивается и не идёт обратно почему??

  • @KaroTaro-
    @KaroTaro- 2 ปีที่แล้ว

    Здравствуйте я вас нашёл в телеге как можно с вами связаться ? Нужен программист очень !!

  • @OnlyPos1tive
    @OnlyPos1tive 3 ปีที่แล้ว +2

    Помогите решить проблему: Hero.cs(66,26): error CS0115: 'Hero.GetDamage()': no suitable method found to override

    • @mirastulebayev6058
      @mirastulebayev6058 3 ปีที่แล้ว

      тоже

    • @mirastulebayev6058
      @mirastulebayev6058 3 ปีที่แล้ว +1

      а всё нашел в чем дело, в 3:09 говорит "унаследовать класс сущности", то есть Entity. В коде это выглядет следующим образом
      public class Hero : Entity
      вписываешь в пятой строке

    • @OnlyPos1tive
      @OnlyPos1tive 3 ปีที่แล้ว

      @@mirastulebayev6058 я нашел потом как решить но у меня произошла другая проблема уже в зоне когда перс падает должен умереть

    • @OnlyPos1tive
      @OnlyPos1tive 3 ปีที่แล้ว

      @@mirastulebayev6058Что делать если пишет ошибку: error CS0246: The type or namespace name 'Entity' could not be found (are you missing a using directive or an assembly reference?) Это в части ролика про ИИ врага

    • @demsaw
      @demsaw 3 ปีที่แล้ว

      @@OnlyPos1tiveкак ты решил предыдущую ошибку там где hero get damage no suitable скажи пж

  • @scorpionmobilelegends8195
    @scorpionmobilelegends8195 3 ปีที่แล้ว +2

    Ты не задействуешь speed
    [SerializeField] private float speed = 1f; для редактирования вивел
    private void Move()
    {
    Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position + transform.up * 0.1f + transform.right * dir.x * 0.7f, 0.1f);
    if(colliders.Length > 0) dir *= -1f;
    transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, speed * Time.deltaTime);
    }
    Добавил speed * Time.deltaTime

    • @dimexplay6862
      @dimexplay6862 2 ปีที่แล้ว

      Здесь спид не нужен, так как это переменная скорости игрока, а не монстра

    • @pashakiller228
      @pashakiller228 2 ปีที่แล้ว

      CS0115 GetDamage()": не найден метод, пригодный для переопределения.

  • @dokers2084
    @dokers2084 2 ปีที่แล้ว +4

    Базовый метод проверки Colission имеет проблмеу. Персонажу нанесется урон если он подбежит к врагу, но если он будет стоять у врага то урона не будет, как реализовать нанесение урона главному герою каждые n секунд как он стоит рядом с врагом, например? Буду очень благодарен

    • @firemon7791
      @firemon7791 2 ปีที่แล้ว +1

      OnCollisionStay если еще актуально

    • @semiliconGames
      @semiliconGames 2 ปีที่แล้ว +1

      @@firemon7791 c этого места поподробнее

  • @zigmondd
    @zigmondd 3 ปีที่แล้ว +8

    а можешь показать как сделать под андроид?

    • @looolz6549
      @looolz6549 3 ปีที่แล้ว +3

      он говорил что в конце будет под андроид делать

    • @zigmondd
      @zigmondd 3 ปีที่แล้ว

      @@looolz6549 а окей

  • @МаксимТретьяков-е1ф
    @МаксимТретьяков-е1ф 3 ปีที่แล้ว +5

    Кто может скинуть скрипты? У меня выскакивают ошибки. Препятствие не наносит урон игроку.

    • @aimeethomas67
      @aimeethomas67 2 ปีที่แล้ว

      решил проблему?

  • @mrmojevelnic3054
    @mrmojevelnic3054 3 ปีที่แล้ว +1

    Здравствуй, у меня вопрос возник.
    Куда привязывать класс сущности? Не понятно немного.

    • @alpamis
      @alpamis 3 ปีที่แล้ว +2

      Где MonoBehoveriy нужно заменять на Enity

  • @vladukhach-bmx8783
    @vladukhach-bmx8783 2 ปีที่แล้ว +2

    Кто решил проблему с WalkingMonster(не движется назад)?

  • @Life_Gear
    @Life_Gear ปีที่แล้ว

    премного благодарен

  • @victoriashpetnaya6954
    @victoriashpetnaya6954 ปีที่แล้ว +2

    Всем привет!
    Может,кто еще живой и может подсказать, как это исправить:
    Assets\Scripts\Obstacle.cs(6,5): error CS8803: Top-level statements must precede namespace and type declarations.
    Assets\Scripts\Obstacle.cs(6,5): error CS0106: The modifier 'private' is not valid for this item
    Делала все абсолютно по инструкции, бесит уже.

    • @Ainn79
      @Ainn79 ปีที่แล้ว

      такова работа разраба, тебе придется работать с хуевым кодом и искать как исправить ошибки (а как исправить я сам хз)) )

  • @capplay5602
    @capplay5602 3 ปีที่แล้ว +3

    Один вопрос почему ошибка компилятора хоть всё по видео

    • @atlassdev2481
      @atlassdev2481  3 ปีที่แล้ว +1

      А в чëм именно ошибка?

    • @s_t_a_n_i_s_l_a_v1351
      @s_t_a_n_i_s_l_a_v1351 3 ปีที่แล้ว +1

      Та же проблема сделал скрипт для деревяшки и при косании персонажа к ней выдает ошыбку NullReferenceException: Object reference not set to an instance of an object

    • @atlassdev2481
      @atlassdev2481  3 ปีที่แล้ว +5

      @@s_t_a_n_i_s_l_a_v1351 Смотри, тут моя ошибочка. Всё, что нужно сделать - в методе Awake инициализировать синглтон: Instance = this;

    • @capplay5602
      @capplay5602 3 ปีที่แล้ว +2

      @@atlassdev2481 CS0103: the name “Hero” does not exist in the current context

  • @timofeyvinogradov9484
    @timofeyvinogradov9484 ปีที่แล้ว

    У меня проблема: когда монстр сталкивается с персонажем то персонаж не получает урона

  • @Xopionoma
    @Xopionoma หลายเดือนก่อน

    хэлп:
    Имя "Die" не существует в текущем контексте
    и
    "Hero.GetDamage()": не найден метод, пригодный для переопределения.
    что с этим делать?

  • @coldy5026
    @coldy5026 3 ปีที่แล้ว +3

    @Atlass Dev Привет! У меня почему-то не работает двигающийся монстр и к тому же пропал червяк куда-то (на сцене я его вижу, но когда игру запуская он исчезает) *Также я не добавлял override тк у меня сразу выдавало ошибку*

    • @bananchikyes7316
      @bananchikyes7316 2 ปีที่แล้ว +1

      разобрался?)

    • @Vsempoka
      @Vsempoka 2 ปีที่แล้ว +1

      @@bananchikyes7316 проверь позицию червяка - он может иметь позицию по оси z дальше камеры и она его не видит.

  • @Fordlendis-jk1tj
    @Fordlendis-jk1tj ปีที่แล้ว

    что делать если вылезает ошибка:
    Assets\Scripts\Scripts\Slizar.cs(14,27): error CS1061: 'Hero' does not contain a definition for 'GetObject' and no accessible extension method 'GetObject' accepting a first argument of type 'Hero' could be found (are you missing a using directive or an assembly reference?)
    Помогите пж((

  • @danilmandarin2901
    @danilmandarin2901 3 ปีที่แล้ว +1

    1:48 а это в каком скрипте obstacle или Hero?

  • @Nyrzak
    @Nyrzak 3 ปีที่แล้ว +2

    Здраствуйте, проблема с двигающимся врагом, сделал всё как в видео, но враг почти не двигается, то есть он движется буквально на 0.1 из стороны в сторону, в чём может быть проблема?

    • @kotya7892
      @kotya7892 3 ปีที่แล้ว

      Друг, решил проблему?

    • @Nyrzak
      @Nyrzak 3 ปีที่แล้ว

      @@kotya7892 К сожалению нет

    • @Vladakrut
      @Vladakrut 3 ปีที่แล้ว +3

      @@Nyrzak Я решил, вот отрезок моего кода
      private void Move()
      {
      Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position + transform.up * 1f + transform.right * dir.x * 0.7f, 0.1f);
      if (colliders.Length > 0) dir *= -1f;
      transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, Time.deltaTime);
      }

    • @Vladakrut
      @Vladakrut 3 ปีที่แล้ว +1

      @@kotya7892 Я решил, вот отрезок моего кода
      private void Move()
      {
      Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position + transform.up * 1f + transform.right * dir.x * 0.7f, 0.1f);
      if (colliders.Length > 0) dir *= -1f;
      transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, Time.deltaTime);
      }

    • @tomtomson8779
      @tomtomson8779 3 ปีที่แล้ว

      @@Vladakrut благодарю

  • @Артемдру-п5ш
    @Артемдру-п5ш 3 ปีที่แล้ว +2

    Помогите плиз, вот такая ошибка
    Assets\Materials\Skripts\Hero.cs(51,26): error CS0115: 'Hero.GetDamage()': no suitable method found to override

    • @atlassdev2481
      @atlassdev2481  3 ปีที่แล้ว

      А в скрипте сущностей к методу GetDamage написал модификатор virtual?

    • @Артемдру-п5ш
      @Артемдру-п5ш 3 ปีที่แล้ว

      @@atlassdev2481 не дает прикрепить скрипт entity, просит сначала пофиксить ошибку

    • @atlassdev2481
      @atlassdev2481  3 ปีที่แล้ว

      @@Артемдру-п5ш А зачем его прикреплять? Мы просто наследуем класс entity в скрипте Hero. Методам класса entity добавляем модификатор virtual, чтобы в дочерних классах их переназначить. Ну а уже в Hero мы переназначаем метод GetDamage при помощи модификатора override

    • @Артемдру-п5ш
      @Артемдру-п5ш 3 ปีที่แล้ว

      @@atlassdev2481 по итогу убрал слово override и все заработало. Это будет проблемой в будущем?

    • @philipmorris6040
      @philipmorris6040 3 ปีที่แล้ว

      @@Артемдру-п5ш просто измени ' public class Hero : MonoBehaviour ' на ' public class Hero : Entity '

  • @legosy1336
    @legosy1336 2 ปีที่แล้ว +2

    У меня пенек урон не наносит, уже 3 часа пытаюсь понять что не так
    Помогите пж

    • @legosy1336
      @legosy1336 2 ปีที่แล้ว +1

      Я решил, я забыл код на пень добавить, капец тупой

    • @gamnyargames
      @gamnyargames 2 ปีที่แล้ว

      так же
      вот не понимаю почему

    • @Felix-nj2fr
      @Felix-nj2fr 2 ปีที่แล้ว

      Кинь скрипи на пенек наново !!
      У меня заработало

    • @aimeethomas67
      @aimeethomas67 2 ปีที่แล้ว

      @@Felix-nj2fr а можешь скрипт кинуть на пенек. вроде все ок, но не работает

    • @smasnikov8911
      @smasnikov8911 2 หลายเดือนก่อน

      кинул скрипт не на пенек , а на картинку
      пипец 30 минут потерял

  • @daniil_shpilkin
    @daniil_shpilkin 3 ปีที่แล้ว +4

    Atlass Dev помоги, почему у меня враг который двигается, не меняет свое направление на противоположное? Типо он просто идет прямо, сделал как на видео и не получилось... вот строчки кода: private void Move()
    {
    Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position + transform.up * 0.1f + transform.right * dir.x * 0.7f, 0.1f);
    if (colliders.Length > 0) dir *= -1f;
    transform.position = Vector3.MoveTowards(transform.position, transform.position + dir, Time.deltaTime);
    }
    вроде ты говорил что вот этот метод должен заставить Hero поменять направление.

    • @pishy_kommentu
      @pishy_kommentu 3 ปีที่แล้ว

      Исправил?

    • @ReyKapcher
      @ReyKapcher 2 ปีที่แล้ว

      решил проблему?

  • @покупкаипродажаголды
    @покупкаипродажаголды ปีที่แล้ว

    а че движущийся монстр не убиваем?