Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106

Как организовать движение объекта к цели

23.09.2014, 18:33. Показов 8976. Ответов 129
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем, Здравствуйте! Интересует такой вопрос. Как организовать движение объекта (обьект , двигается вперед, но может поворачивать на определенный угол и снова едет вперед) к цели С, из A в B цель передвинулась, я получил координаты из них стороны и углы треугольника (через аркосинус), полученного вершинами, начала , куда передвинулся обьект и целью, Дальше нужно организовать перемещение , вернее , надо как то проверять условия, чтобы обьект , через определённые промежутки времени, опять проверял направление и снова двигался к цели. Уже 3 дня бьюсь над этой задачей. Не знаю как организовать проверку и правильный поворот. То есть цель , сама должна поворачиваться, потом двигаться , проверять и так далее) Помогите пожалуйста!
Миниатюры
Как организовать движение объекта к цели  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.09.2014, 18:33
Ответы с готовыми решениями:

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

Как организовать движение объекта по координатам?
Добрый день,есть класс,описывающий движение машины,подскажите,как вывести движущуюся машину на экран,хотябы по прямой. Main: ...

Организовать движение объекта
Организовать движение объекта снизу вверх. При движении ракета должна оставлять дымовой след. внутри док картинка с которой будет работа....

129
 Аватар для Апострофф
9912 / 3934 / 743
Регистрация: 11.10.2011
Сообщений: 5,916
24.09.2014, 12:25
Студворк — интернет-сервис помощи студентам
smsgeorge, знак площади (плюс или минус) ((a.X – c.X) * (b.Y – c.Y) – (b.X – c.X) * (a.Y – c.Y)) говорит о том
Цитата Сообщение от Апострофф Посмотреть сообщение
слева или справа от луча [a,b) находится точка с
Читайте внимательнее
1
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
24.09.2014, 12:27  [ТС]
Апострофф, а снизу сверху тоже так же будет работать?
0
 Аватар для Апострофф
9912 / 3934 / 743
Регистрация: 11.10.2011
Сообщений: 5,916
24.09.2014, 12:29
Точно так же!!!
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
24.09.2014, 12:34  [ТС]
Апострофф,Благодарю!

Добавлено через 5 минут
Апострофф, А какие именно х и у берутся, поясни еще пожалуйста, каких точек?
0
 Аватар для Апострофф
9912 / 3934 / 743
Регистрация: 11.10.2011
Сообщений: 5,916
24.09.2014, 12:41
a.X - координата X точки А etc.
А вот вот соответствие +/- и право/лево зависит от вашей системы координат (геометрическая или экранная - они зеркальны), проще узнать опытным путём.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.09.2014, 12:42
Тогда зачем вообще углы, треугольники, площади и радианы?
Всё решается сравнением координат объекта и цели.
и SoftIce дал простой алгоритм.
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
24.09.2014, 12:45  [ТС]
Апострофф, я визуал бейски недавно стал изучать , может итоговый код дать , я в нем разберусь, а то там по теме той. прочитал все, но все равно затрудняюсь. А так ты меня спас , 4 дня мучался)

Добавлено через 1 минуту
Alex77755, если ты прочтешь все тему, ты поймешь, что правильный ответ именно на мою задачу, дал Апострофф, но всем отписавшимся Огромная Благодарность!

Добавлено через 1 минуту
Апострофф, экранная, ноль вверху слева.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.09.2014, 12:47
Оптимальнее на мой взгляд определить угол на цель.
И уже по нему определять новое положение объекта прибавляя к его предыдущим координатам приращения рассчитанные через Sin-Cos. тогда объект будет всегда идти напрямую к цели
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
24.09.2014, 12:53  [ТС]
Alex77755, я и так получил угол, я не могу перемещать обьект как за благорассудится, а только сначала, повернуть его, нажав клавишу A или D (вот это я и хочу узнать) , а потом нажав клавишу W идти к цели .
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.09.2014, 13:00
А я всё пытаюсь понять: Обект должен сам определять угол или же его поворачивают вручную?
Это же принципиально разнае вещи!
Если задавать клавишами A и D, то зачем объет должен чего-то определять?
A,D меняет направление(угол), W,S меняет модуль скорости
Применительно к примеру
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
   Private Sub Timer1_Timer()
 
        ex = X0 + V * Sin(D)
        ey = Y0 + V * Cos(D)
        rIs
        X0 = ex
        Y0 = ey
        
End Sub
  
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
       Select Case KeyCode
                
            Case 65 'влево
                            D = D + 0.05
            Case 68 'вправо
                            D = D - 0.05
             Case 87 'быстрей
                            V = V + 0.1
             Case 83 'медленней
                            V = V - 0.1
        End Select
0
 Аватар для Апострофф
9912 / 3934 / 743
Регистрация: 11.10.2011
Сообщений: 5,916
24.09.2014, 13:02
smsgeorge, что происходит за одно нажатие на кнопку А (или D)?
И что при их удержании в нажатом состоянии?
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.09.2014, 13:02
А если объект должен сам определять направление, то угол определить из коэффициента линии соединяющей объект и цель
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
24.09.2014, 13:12  [ТС]
Alex77755, Все написано у меня, но поясню. Такая механика, что компьютер сам нажимает клавиши A и D тем самым поворачивает. Он ищет цель на экране, потом делает передвижение клавишей W сам, дабы получился треугольник , из чего я могу определить угол поворота к цели, далее он (как сейчас я узнал, он будет считать площадь) из чего будет получать местоположение относительно цели и исходя из условий , слева или справа , снизу или сверху, он будет поворачивать зажимая клавишу A или D определенное количество времени, а потом идти, так как есть погрешности, он снова будет находить треугольник, уже точку начала он возьмет куда пришел в первый раз, а точку B куда сходил после как вычислил угол, потом высчитает угол , снова определит положение относительно С, повернется и пойдет вперед, пока не придет куда надо, когда расстояние будет меньше к примеру 10 пикселей.

Добавлено через 1 минуту
Апострофф, если зажать будет без конца поворачиваться, поэтому время за которое он совершает полный оборот, я делю на 360 и умножаю на угол , на который он должен повернуться, в итоге , он поворачивается примерно туда куда надо,
0
 Аватар для Апострофф
9912 / 3934 / 743
Регистрация: 11.10.2011
Сообщений: 5,916
24.09.2014, 13:17
smsgeorge, точка С неподвижна?
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
24.09.2014, 13:17  [ТС]
Апострофф, да, но я ее могу менять.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.09.2014, 13:32
дабы получился треугольник , из чего я могу определить угол поворота к цели
Зная координаты цели и обекта не надо никуда шагать, что бы определить угол...
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
24.09.2014, 13:33  [ТС]
Апострофф, Помоги с этой темой , тот код лучше, это лучше,
Visual Basic
1
2
3
4
5
6
7
8
Type Coor 
   X As Double 
   Y As Double 
 End Type 
 
 Function Get_3AngleSqr(a As Coor, b As Coor, c As Coor) As Double 
 Get_3AngleSqr = ((a.X - b.X) * (a.Y + b.Y) + (b.X - c.X) * (b.Y + c.Y) + (c.X - a.X) * (c.Y + a.Y)) / 2 
 End Function
Это финальный код? У меня визуал на него ругается) не запускает.

Добавлено через 1 минуту
Alex77755, это я можно сказать делаю, чтобы определить куда я смотрю, а как по другому, если вы мне подскажете буду благодарен, если у вас есть скайп, я даже показал бы вам, что делаю)
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
24.09.2014, 13:42
Запомнть угол и координаты после операции передвижения
В следующем цикле по координатам определить направление на цель.
Сравнить с предыдущим направлением и в зависимости от этого нажать A или D.
сделать ход.
Запомнить координаты и угол

Добавлено через 1 минуту
Кстати для движения всегда надо нажимать W или это для ускорения?
Если для ускорения, то надо запоминать и модуль скорости

Добавлено через 2 минуты
Для движения W надо удерживать?
Если отпустить объект останавливается?
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
24.09.2014, 14:14  [ТС]
Alex77755, для движения,
Цитата Сообщение от Alex77755 Посмотреть сообщение
Запомнть угол и координаты после операции передвижения
В следующем цикле по координатам определить направление на цель.
Сравнить с предыдущим направлением и в зависимости от этого нажать A или D.
сделать ход.
Запомнить координаты и угол
я так и делал
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
24.09.2014, 14:15
Персонаж может идти и поворачиваться одновременно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.09.2014, 14:15

Организовать движение объекта по форме при нажатии на клавишу
Всем привет. Подскажите, пожалуйста, как правильно организовать движение объекта по форме при нажатии на клавишу. Уточню: при...

Как организовать движение по X и Y в центр?
Нужен не сам код. А именно алгоритм.

Как организовать движение новых PicrtureBox?
Всем привет! Создаю новые PictureBox, хочу, чтобы они сдвигались влево. Когда я помещаю функцию Draw в таймер, то происходит только...

Как организовать движение товаров склада?
Помогите, плиз, организовать движение товаров: пополнение склада, изъятие со склада (продажа)... В приложении то на что ума хватило, а...

Возможно ли сделать движение зрачков, реагирующее на движение какого-либо объекта
Вообщем благодаря модеру удалось разукрасить картинку,за что ему спасибо. Нужна анимация для нее. Возможно ли сделать движение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru