куда ты направляешь свое движение / левый стик геймпада, на том и будет сфокусирован игрок. Написал небольшой метод, который делает Box Trace во время того, как игрок использует Input Axis MoveForward / MoveRight. Но вот сейчас немного задумался. Что дешевле? Box Trace во время движения, или простой компонент Box Collision, который бы чекал таргеты на OnComponentBeginOverlap и OnComponentEndOverlap эвентах.
сделай оба и поставь счетчик
в данном случае ни то и ни другое, скалярное произведение векторов
А как при помощи скалярного произведения векторов я смогу к примеру взять врага, кастануть на него и вызвать у него метод? И скалярное произведение насколько я понимаю между вектором направления Character-a и input вектором?
с помощью другой простой математики определяешь врагов в радиусе, среди них выбираешь того, на которого смотришь (т.е. куда стик наведён). Да, между инпутом (направление стика) и вектором от персонажа (или камеры, тут сам смотри) к противнику
Понял спасибо. Если первое для меня еще изи, то вот со вторым? Не подскажешь мб формулы, теоремы, метод может есть какой-то в FMath библиотеке, чтобы узнать врага в радиусе?
ну камон, попадание точки в окружность
Посчитай расстояние между двумя точками, оно должно быть меньше радиуса круга
У меня с геометрией все не так хорошо как хотелось бы на бумаге, а тут еще и анрил. Ладно, буду гуглить "попадание точки в окружность", спасибо! То есть сейчас алгоритм выглядит примерно так: 1. Я вычисляю скалярное произведение между векторами камеры, или персонажа и инпута игрока. 2. Я делаю SphereTrace, чтобы найти всех врагов около меня. Дальше проверяю попадают ли эти точки в окружность. Если да, то среди них выбираю подходящую для нанесения удара. Все верно?
а... не совсем, забыл, что для этого ещё надо список потенциальных врагов недалеко от тебя найти, это несколько усложняет задачу В общем определять попадание противника в радиус смысла тогда нет, делай сферический оверлап через UKismetSystemLibrary::SphereOverlapComponents при изменении направления
При изменении направления инпута игрока? Потом сохраняю этот списочек и уже нахожу просто ближайшего игрока в определенном направлении. Верно? (сорри, если запариваю)
Обсуждают сегодня