Вот вроде бы никто не смотрит, но ты даёшь полезную инфу, респект тебе
@NCHedge5 жыл бұрын
Ля, не говори, причём я как раз именно такую игру и хочу сделать. Совпадение?
@nocturnalsorrow-5 жыл бұрын
@@NCHedge просто говорю, что человек старается не имея большого спроса и это похвально
@sembarinbom6204 жыл бұрын
Согласен с вами. Человек хороший. Даёт хорошую и полезную информацию. Да ещё и лёгкой в усваении. Вот прям огромное ему за это спасибо.
@НазарРадчук-м5щ3 жыл бұрын
Ты единственный кто делает хорошие туториали и я рад этому спасибо тебе большое
@Arkwright-jr9hx Жыл бұрын
Бесконечная вам благодарочка за такой видеоролик. Прям помог
@kroshka_vseznayka_tv7 ай бұрын
Отличный урок! Спасибо большое ❤
@Замшелыйбулыжник-д8с Жыл бұрын
Лучший
@user-bc5qt9jy5b3 жыл бұрын
Реализация интересная, но я бы убрал проверку на равенство float, достаточно проверки столкновения коллайдера снаряда с коллайдером игрока. Туда же можно добавить и анимированный спрайт или частицы, имитирующие взрыв снаряда, а также расчет урона. У меня в апдаун 2д игре коллайдер игрока сделан только для физики(горизонтальная капсула в районе ног, а на объекте игрока висят еще несколько дочерних gameobject, с разными 2d коллайдерами, которые отвечают за зону урона(капсула) и (только у ботов) дальность взгляда(сфера), а стреляет игрок райкастом(у каждого оружия своя дальность (длина луча)). О, и спасибо за идею, добавлю самонаводящиеся ракеты на вооружение игроку, что-то я про них и не подумал 👍
@monsterclash67905 жыл бұрын
огромное спасибо
@realmukaUnity10 ай бұрын
Всё будет хорошо работать до того момента, пока в игре не появятся препятствия. Почему я не вижу коментариев об этом недочёте? Неужели то, что показано в видео никто не применил на практике. Если вы хотите сделать ии противника лучше, то изучите navigation 2D
@noname-pm6rl5 ай бұрын
Подскажи какой-нибудь материал по этой теме
@VladSClad22 күн бұрын
@@noname-pm6rl он же написал изучить navigation 2D
@illyagrush58844 жыл бұрын
У многих юнити ютуберов 50 - 100к подписчиков, и они в Update обращаются к transform, а у тебя < 20к при этом код качественный, красивый, и полезный.
@developerholygames46174 жыл бұрын
Канал TOП!!!!!!!
@user-bc5qt9jy5b3 жыл бұрын
У кого 100500 просмотров, те тупо накручивают через фриланс-сервисы, ну и друзья-друзья друзей помогают. Тоже давно заметил, что у хороших каналов мало подписчиков, зато они настоящие ✌
@sunmaxplay64912 жыл бұрын
Я бы не согласился с тем что код качественный)
@fantom94194 жыл бұрын
За видео-лайк. С меня подписка
@rycun51472 жыл бұрын
Спасибо, классный ролик. Но вопрос, как сделать что бы снаряд ещё и смотрел в сторону игрока?
@КириллОвчинников-щ2р5 жыл бұрын
Половину курсовой сделал по твоим видео, просто лучший, огромное спасибо! А как сделать так, чтобы этот скрипт срабатывал тогда, когда противник тебя замечает? Может быть есть видео о механике того, что противник тебя замечал?
@meha-engineer4 жыл бұрын
using System.Collections; using System.Collections.Generic; using UnityEngine; public class enemy1 : MonoBehaviour { public float speed; public float stoppingdistance; public float retreatDistance; public Transform player; void Start () { player = GameObject.FindGameObjectWithTag("Player").transform; } // Update is called once per frame void Update () { float direction = player.transform.position.x - transform.position.x; if (Mathf.Abs(direction) < 20){ if(Vector2.Distance(transform.position, player.position) > stoppingdistance){ transform.position = Vector2.MoveTowards(transform.position, player.position, speed * Time.deltaTime); }else if(Vector2.Distance(transform.position, player.position) < stoppingdistance && (Vector2.Distance(transform.position, player.position) > retreatDistance)){ transform.position = this.transform.position; }else if(Vector2.Distance(transform.position, player.position) < retreatDistance){ transform.position = Vector2.MoveTowards(transform.position, player.position, -speed * Time.deltaTime); } } } } //вот держи
@leshalozhkin2 жыл бұрын
@@meha-engineer спасибо!
@fantom94194 жыл бұрын
Блин чувак большое спасибо
@light79563 жыл бұрын
А что за игра на 0:20
@Geva2653 жыл бұрын
А как сделать расстояние на которое может видеть враг?
@liberte_off11 ай бұрын
очень хороший видеоролик, но есть один вопрос. При стельбе от бота летят пули на место игрока, а когда игрок убежал, они продолжают стоять на его позиции при выстреле. Хотелось бы сделать, чтобы пули продолжали лететь по своему направлению, когда не попали в игрока. Как я могу это сделать?
@v1ad_edson5 жыл бұрын
Большое спасибо!
@ЦывильныГурман Жыл бұрын
здравствуйте, столкнулся с проблемой, клоны создаються но из не видно, что делать? заранее спасибо
@avduhinplay92864 жыл бұрын
Помогите пж, что делать если я повышаю скорость противника и его колбасит?
@Baga5233 жыл бұрын
Помоги пожалуйста, когда моя пуля касается игрока она исчезает, но назад не возвращяется и пишет The object of type 'GameObject' has been destroyed but you are still trying to access it. помоги пожалуста!!!
@АлексейКопылов-л8е4 жыл бұрын
error CS0029: Cannot implicitly convert type `UnityEngine.Transform[]' to `UnityEngine.Vector2' Помогите решить данную проблему . Ругается на этот кусок кода target = GameObject.FindWithTag ("Player").GetComponents ();
@graphicaldesign27764 жыл бұрын
Так а что это за кусок? Я даже не знаю к чему он написан.
@dronsan-unity73023 жыл бұрын
.position добавь к этой ошибочной строке
@Комментатор-ф5ч3 жыл бұрын
Андрей скопируй плиз свой скрипт у меня такая же ошибка
@dronsan-unity73023 жыл бұрын
@@Комментатор-ф5ч я не писал этот код, я просто посмотрел видео, но могу предположить: target = GameObject.FindWithTag ("Player").GetComponents ().position; но по видосу совсем не это написано, Копылов всё перепутал)
@Назар-ъ2щ5 жыл бұрын
привет, хорошие вещи делаешь, подскажи пожалуйста решение проблемы, я по твоему уроку сделал выстрелы от персонажа к врагу и после того как патрон попадает во врага он умирает, но есть проблема, когда я еще раз нажимаю на кнопку выстрелить(пулька вылетает но она остаеться на месте и ничего не происходит, это выглядит ужасно) смысл в том что бы после уничтожения врага пульки больше не вылетали пока на сцене не появиться новый враг.
@graphicaldesign27765 жыл бұрын
Надо задать условие и отдельные метод на стрельбу. И по сути, надо задать чтоб метод срабатывал только в том случае, если есть хотя бы один объект с тэгом "Enemy", например.
@Назар-ъ2щ5 жыл бұрын
@@graphicaldesign2776 спасибо большое, но сама проблема в том что я не знаю как задать что бы проверяло есть ли обьект Енеми на сцене, в этом вся проблема)
@graphicaldesign27765 жыл бұрын
Тогда только читать, читать и читать документацию) docs.unity3d.com/ScriptReference/GameObject.Find.html
@Назар-ъ2щ5 жыл бұрын
@@graphicaldesign2776 спасибо еще раз)
@Назар-ъ2щ5 жыл бұрын
@@lordtwilight1224 скинь свой вк
@nikitagorin36345 жыл бұрын
Какой способ с отсчетом времени лучше: тот, что в видео, Coroutines или вообще использование таймеров? Какой рекомендуете использовать и почему?
@graphicaldesign27765 жыл бұрын
Таймеры можно делать и через обычные переменные в Update, которые будут уменьшаться, к примеру, каждый кадр. Но как по мне, это лучше переделывать под Coroutines, потому что это является их назначением) И в некоторых компаниях таймер при помощи переменных, может расцениваться как "костыль", потому что это не совсем корректно.
@dmitryshram26824 жыл бұрын
топчик. Я из 2020
@NCHedge5 жыл бұрын
А можешь сделать видео урок что бы сам персонаж поворачивался за мышкой TDS если что
@КириллОвчинников-щ2р5 жыл бұрын
Вставляешь этот код в Update \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ Vector3 difference = Camera.main.ScreenToWorldPoint(Input.mousePosition) - transform.position; float rotateZ = Mathf.Atan2(difference.y, difference.x) * Mathf.Rad2Deg; transform.rotation = Quaternion.Euler(0f, 0f, rotateZ + offset); Скорее всего тебе уже не надо но мало ли)
@illyagrush58844 жыл бұрын
@@КириллОвчинников-щ2р Я скопировал)
@cerf145064 жыл бұрын
Прошу прощения если глупый вопрос, но как сделать так, чтобы игрок получал урон при попадании пули
@dronsan-unity73023 жыл бұрын
в игроке сделай метод получения урона. и там же в игроке может условие запилить, если его коснулись, то этот метод активируй. или в самой пуле, перед уничтожением тоже обратись к этому методу
@miner-74234 жыл бұрын
Ребята подскажите как сделать так что бы пуля удалялась при поподании в предмет
@dronsan-unity73023 жыл бұрын
при условии достижения добавь дестрой
@Димас-е4п4 жыл бұрын
Добрый день. А как сделать так, что бы снаряды продолжали лететь после того как достигнут положения персонажа (использую target, а не player.position)
У меня персонаж умирает и вылетает ошибка, как можно исправить? как понял "ИИ" не может найти Player missingreferenceexception: the object of type transform has been destroyed и т.д
@graphicaldesign27764 жыл бұрын
Скорее всего, уничтожив персонажа, удаляется и скрипт на этом персонаже, соответственно останавливаются какие-то процессы. Надо просто немного переработать этот скрипт.
@dronsan-unity73023 жыл бұрын
все действия, которые ссылаются на игрока, проверяй условием player!=null
@karpa28955 жыл бұрын
Определёно лайк! А как можно сделать, чтоб он стрелял на определённой дистанции?
@graphicaldesign27765 жыл бұрын
Проверять приближение противника
@veymatcompany69592 жыл бұрын
Всем привет, вопрос такой - вот скрипт пули, рэй каст работает, но пуля не летит к персонажу. враг только спаунит пулю она на сцене появляется но не двигается. после лай тайм ее убирает. в чем может быть ошибка? public class Bullet : MonoBehaviour { [SerializeField] private float _speed; [SerializeField] private float _lifeTime; [SerializeField] private float _distance; [SerializeField] private int _damage; [SerializeField] private LayerMask _solid; [HideInInspector] public Vector2 Direction; public GameObject destroyEffect; private void Start() { Destroy(gameObject, _lifeTime); } private void Update() { RaycastHit2D hit = Physics2D.Raycast(transform.position, Direction, _distance, _solid); if(hit.collider != null) { if(hit.collider.CompareTag("Player")) { hit.collider.GetComponent().TakeDamage(_damage); } Instantiate(destroyEffect, transform.position, Quaternion.identity); Destroy(gameObject); } transform.Translate(Direction * _speed * Time.deltaTime); } }
@skarabeydm5 жыл бұрын
А есть разница между способом уничтожения из видео и этим: if (условие) { Destroy(gameObject); } ?
@graphicaldesign27765 жыл бұрын
этот способ правильнее, если объект надо уничтожить не при пересечении, а например через определенное время
@@graphicaldesign2776 и так же в метод удобно музон вставить, чтобы по сто раз не писать строку с музыкой) ну и прочие эффекты
@eliandok4 жыл бұрын
Доброго времени суток у меня возникла проблема код написал проверил перепроверил наложил на врага указал все параметры но увы он не как не реагирует на плеера и тег проверял вообще ни в какую
@eliandok4 жыл бұрын
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Enemy : MonoBehaviour { public float speed; public float stoppingdistance; public float retreatDistance; private float timeBtwShots; public float startTimeBtwShots; public GameObject projectile; public Transform player; public float StartTimeBtwShots { get => startTimeBtwShots; set => startTimeBtwShots = value; } void Start () { player = GameObject.FindGameObjectWithTag("Player").transform; timeBtwShots = startTimeBtwShots; } void Updata () { if (Vector2.Distance(transform.position, player.position) > stoppingdistance) { transform.position = Vector2.MoveTowards(transform.position, player.position, speed * Time.deltaTime); } else if (Vector2.Distance(transform.position, player.position) < stoppingdistance && (Vector2.Distance(transform.position, player.position) > retreatDistance)) { transform.position = this.transform.position; } else if (Vector2.Distance(transform.position, player.position) < retreatDistance) { transform.position = Vector2.MoveTowards(transform.position, player.position, -speed * Time.deltaTime); } if (timeBtwShots
@HALKOMEN3 жыл бұрын
@@eliandok void Updata написал внесто void Update
@veymatcompany69592 жыл бұрын
Всем привет. Как сделать что бы пули не следовали за главным персонажем. а просто были выпущены в направлении его ?
@jly4uctbly8022 жыл бұрын
Вопрос ещё актуален?
@jly4uctbly8022 жыл бұрын
12:16 пересмотри пожалуйста этот момент внимательно, тут ответ на твой вопрос
@veymatcompany69592 жыл бұрын
@@jly4uctbly802 я прописал target вместо player.position. и все заработало. Я просто с деревни, до меня долго доходит
@jly4uctbly8022 жыл бұрын
@@veymatcompany6959 хорошо что всё работает, не нужно так себя критковать, будто все родились с опытом программирования, все с чего-то да начинают. Кому-то что-то даётся легко а что-то трудно, так было и будет со всеми.
@veymatcompany69592 жыл бұрын
@@jly4uctbly802 благодарю Вас за поддержку)
@UFedor-hf3ys5 жыл бұрын
Что делать если не создаёт при изменение "startTimeBtwShots"
@graphicaldesign27765 жыл бұрын
Проблема скорее всего в переменной, проверьте правильность написания
@oi66645 жыл бұрын
что за музон 2 начале ?
@hleviks48024 жыл бұрын
есть какой-то способ сделать чтобы пуля продолжала двигаться после того как достигнет позиции
@graphicaldesign27764 жыл бұрын
Теоретически, да. Не уничтожать ее.
@Димас-е4п4 жыл бұрын
@@graphicaldesign2776 если не уничтожать её то снаряд просто останавливается (в случае промаха мимо игрока) на месте последнего положения игрока.
@dronsan-unity73023 жыл бұрын
@@Димас-е4п задай направление пуле и просто движение вперед
@alexzipos40183 жыл бұрын
@@dronsan-unity7302 через Translate?
@dronsan-unity73023 жыл бұрын
@@alexzipos4018 можно, так же можно и через rigidbody
@danilast0st0nvta385 жыл бұрын
А как сделать, чтобы пуля удаляется со временем или пролетев некоторое расстояние?
@graphicaldesign27765 жыл бұрын
Добавить свойство Destroy
@hardcode78505 жыл бұрын
сделай так чтобы игрок сам стрелял пж
@graphicaldesign27765 жыл бұрын
Сам через определенный промежуток времени? Или при клике, чтоб мы могли управлять стрельбой?
@antoniobohachuk5735 жыл бұрын
@@graphicaldesign2776, да, при клике. Можете, пожалуйста, объяснить как сделать так, чтобы когда мой персонаж стрелял пуля летела четко прямо и при развороте он бы уже стрелял с минусовой скоростью, то есть назад. Заранее Спасибо)
@douclyy5 жыл бұрын
@@graphicaldesign2776 Можно попросить сделать тебя отдельное видео на тему стрельбы из лука в 2д игре с элементами физики? Очень хочется научиться, но ничего годного и понятного в интернете найти не могу :(
@Imudonnn2 жыл бұрын
у меня снаряды не летят на перса, а просто спавнятся на его последнем месте. Что делать? Вод код: using System.Collections; using System.Collections.Generic; using UnityEngine; public class Projectile : MonoBehaviour { public float speed; public Transform player; private Vector2 target; // Start is called before the first frame update void Start() { player = GameObject.FindGameObjectWithTag("Player").transform; target = new Vector2(player.position.x, player.position.y); } // Update is called once per frame void Update() { transform.position = Vector2.MoveTowards(transform.position, target, speed * Time.deltaTime); } }
@Imudonnn2 жыл бұрын
помогите пожалуйста
@feroindiary3462 жыл бұрын
теперь осталось объяснить противнику что у него есть друзья хех и узнать можно ли реализовать тоже самое но физично через addforce if (Vector2.Distance(transform.position, target.position) > StoppingDistance) { var dir = (target.position - transform.position).normalized; rb.velocity = dir * FollowSpeed; } else if (Vector2.Distance(transform.position, target.position) < StoppingDistance && Vector2.Distance(transform.position, target.position) > retreatDistance){ rb.velocity = Vector2.zero; } else if (Vector2.Distance(transform.position, target.position) < retreatDistance) { var dir = (target.position - transform.position).normalized; rb.velocity = dir * -FollowSpeed; }
@feroindiary3462 жыл бұрын
@JOOSTMMO ну это да, но я не знаю ещё как сделать чтобы он расстояние от друзей держал иначе это очень смешно. Вариант с добавлением триггера на каждого врага по отдельности это бред.
@feroindiary3462 жыл бұрын
@JOOSTMMO я всего лишь написал здесь рабочую версию через физику
@illyagrush58844 жыл бұрын
Уай ты не юзаешь FixedUpdate()???
@teamaster6365 жыл бұрын
В 3д сильно большая разница?
@graphicaldesign27765 жыл бұрын
внушительная, так как большее количество осей
@НазарРадчук-м5щ3 жыл бұрын
А эти скрипты работают в 3D на юнити? Если да то есть ли какие то различия?
@juuzua3 жыл бұрын
а как сделать бота, который будет отслеживать игрока через стену?
@МаксимРазгуляй5 жыл бұрын
не работает скрипт для того чтобы снаряды просто летели
@graphicaldesign27765 жыл бұрын
Значит Вы сделали что-то не так.
@justpaper41455 жыл бұрын
Можешь оставлять ссылки на код? Или сам код, так будет проще
@graphicaldesign27765 жыл бұрын
Что так будет проще?
@t.f_fedos25075 жыл бұрын
@@graphicaldesign2776 очень
@kroniecraft83394 жыл бұрын
Мне кажется он делает правильно. Когда человек сам пишет, он учиться, делает ошибки исправляет их
@overgamezs3 жыл бұрын
@@kroniecraft8339 когда ты пол часа на то чтобы переписать а потом ещё 3 часа на то чтобы понять что ты написал не так это нифига не круто
@kroniecraft83393 жыл бұрын
@@overgamezs учись писать быстрее епт, если тебе нужно 3 часа для 16 строк...
@overgamezs3 жыл бұрын
в чем ошибка? using System.Collections; using System.Collections.Generic; using UnityEngine; public class vrag : MonoBehaviour { public float speed; public float stoppingdistance; public float retreatDistance; public Transform player; void Start() { player = GameObject.FindGameObjectWithTag("Player").transform; } void Update() { if(Vector2.Distance(transform.position, player.position) > stoppingdistance) { transform.position = Vector2.MoveTowards(transform.position, player.position, speed * Time.deltaTime); } else if (Vector2.Distance(transform.position, player.position) < stoppingdistance && (Vector2.Distance(transform.position, player.position) > retreatDistance) { transform.position = this.transform.position; } else if (Vector2.Distance(transform.position, player.position) < retreatDistance) { transform.position = Vector2.MoveTowards(transform.position, player.position, -speed * Time.deltaTime); } } }