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

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

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

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

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

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

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

129
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
25.09.2014, 15:18
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от smsgeorge Посмотреть сообщение
в твоей программе все движется по координатам
Покажи в каком месте? Я не могу тебе ничего объяснить т.к. ты вообще ничего не знаешь и говоришь ерунду. Учи основы, вектора.
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
25.09.2014, 15:35  [ТС]
The trick, вот к примеру, просто берутся и прибавляются координаты в итоге в переменной src.p.X будет уже что то другое чем до этого действия, если я прибавлю координату у меня ничего не случится, так как чтобы переместилось , надо жать клавишу. Но когда я нажму клавишу он передвинется, но координата не запишется(
Visual Basic
1
2
3
   If ang > 0.707 Then
        src.p.X = src.p.X + src.d.X * IncDist
        src.p.Y = src.p.Y + src.d.Y * IncDist
Добавлено через 7 минут
Visual Basic
1
  If ang > 0.707 Then
откуда взялся этот коэффициент (0.707)?
0
 Аватар для Апострофф
9912 / 3934 / 743
Регистрация: 11.10.2011
Сообщений: 5,916
25.09.2014, 15:40
Цитата Сообщение от smsgeorge Посмотреть сообщение
откуда взялся этот коэффициент (0.707)?
это ~=1/sqr(2) или Sin(45) (и Cos(45) тоже)

Не по теме:

smsgeorge, вы в школе учились?

0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
25.09.2014, 15:43
smsgeorge, что за бред? Зачем тебе вообще это? Это я сделал для вывода на экран у себя. У тебя этого вообще не будет, у тебя там буду "пиксели сравниваться" как ты написал. Я тебе русским языком написал ТУТ БУДЕТ НАЖИМАТЬСЯ КЛАВИША "W".
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
25.09.2014, 15:47  [ТС]
The trick, Моя голова сейчас лопнет, и вот из-за того, что мне ничего не говоришь, я вот так и путаюсь, сто слет разбираюсь зачем это, зачем то, а потом оказывается , что этого вообще не надо.. Толку то тогда от такого алгоритма(

Сейчас я еще больше запутался(
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
25.09.2014, 15:50
Цитата Сообщение от smsgeorge Посмотреть сообщение
и вот из-за того, что мне ничего не говоришь
Да будет так . Я тебе больше не буду разъяснять, иди возьми учебник геометрии или задай вопрос в соответствующем разделе. Эта тема уже не имеет отношение к VB6, если и дальше тут будет флуд - закрою.
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
25.09.2014, 16:04  [ТС]
The trick, ну теперь бегает и крутится постоянно)

Добавлено через 12 минут
The trick,тебе сложно было в своем алгоритме стереть все что мне не надо, я откуда знаю что надо мне , а что нет, я сутки разбираюсь спрашиваю а это зачем, ты молчишь. Я ванга что ли? как я могу разобраться, когда ты ничего не объясняешь, сутки подряд ты скидываешь мне этот пост https://www.cyberforum.ru/post6642690.html, хотя я кроме этого еще сто вещей спросил. просто сложно у что ли объяснить, что вот эта вещь служит к примеру для проверки того то и все , а когда я вижу вот такой код
Visual Basic
1
2
3
 vec = src.d
    src.d.X = vec.X * Cos(dir) - vec.Y * Sin(dir)
    src.d.Y = vec.X * Sin(dir) + vec.Y * Cos(dir)
я вообще не представляю зачем это делается, что происходит с переменными и так далее, я же не код больше просил, а алгоритм, алгоритм действий пойдет для любого языка, хоть машину по нему строй. Я уже сутки спрашиваю пояснить логику действий , а ты все свое( и СЕЙЧАС ТЫ БОЛЬШЕ ОТКАЗЫВАЕШЬСЯ МНЕ ПОМОГАТЬ , столько мы с тобою трудились тут и в пустую( .... вот я тебе код свой небольшой скидывал ,
Visual Basic
1
2
3
4
5
if ($ang>0.707)
KEYDOWN(#w)
WAITMS(500)
KEYDOWN(#w)
end_if
но вот сложно было сказать, что это нафиг не надо, я же тоже просто так не сижу , что пытаюсь делать, но когда ты не знаешь , что делаешь, а тебе только говорят , что ты тупой, то ничего и не происходит. Тем более , что для такого опытного человека как ты понять синтаксис другой программы раз плюнуть. Хочу лишь поблагодарить всех кто помог, подсказал, жаль , что я так и не сделал этот метод(
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
25.09.2014, 16:21
Мышкой меняй положение цели.
Объект сначала определит направление на цель и только потом бежит
Вложения
Тип файла: rar Движение.rar (5.3 Кб, 7 просмотров)
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
25.09.2014, 17:12  [ТС]
Alex77755, это можно реализовать с поворотом и без атангенса?, так как если с ним придется, делать программу в вб, которая будет вычислять атангенс, а потом сохранять в файл, моя программа будет , оттуда вытаскивать его из тхт файла и применять. есть только косинус и синус.

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

Добавлено через 26 минут
придется все таки программу использовать( так как по другому не нашел... я не могу смириться с мыслью, что у The trick как то считает без этого всего. Вот бы алгоритм узнать, мы узнаем то, оно нам дает вот это, а раз этот вот это, то то, получается это. Тогда в сто раз легче) Но он больше не разговаривает со мной(
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
25.09.2014, 20:26
через косинус и синус можно угол найти?
Можно!
Можно даже гланды через ж... рвать!
Вопрос зачем?!
Зачем какие-то треугольники, векторы, площади, описанные окружности....
Уже в четвёртом ответе было решение SoftIce.
Но ты настаивал на определении угла.
Я показал как сделать через угол определённый по тангенсу.
Вот бы алгоритм узнать
Что мешает-то? код не зашифрован!
Но угол там не определяется.
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
25.09.2014, 20:42  [ТС]
Я понял почему вертолеты к примеру точка A(10.1) а точка B(5.5) вычитаем (по X) 10-5=5 , делим это на расстояние, оно всегда будет положительным , потом когда мы учитываем проверку, ну куда поворачиваться мы единичный вектор -1 умножаем на ( 5/раст) получается и всегда получаем один и тот же знак, поэтому и срабатывает поворот, что при таких координатах он всегда будет поворачиваться в одну сторону
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
src.d.X = 0
    src.d.Y = -1
End Sub
 
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    dst.X = X: dst.Y = Y
End Sub
 
Private Sub tmr_Timer()
    Dim ang As Single
    Dim siz As Single
    Dim vec As vec
    Dim dir As Single
    ' находим вектор
    vec.X = dst.X - src.p.X
    bb = vec.X
    vec.Y = dst.Y - src.p.Y
    cc = vec.Y
     Debug.Print bb; "  ", cc
    ' находим расстояние
    siz = Sqr(vec.X * vec.X + vec.Y * vec.Y)
    ' проверка расстояния
    If siz < IncDist Then
        Caption = "Íàéäåí"
        Exit Sub
    Else: Caption = ""
    End If
    ' Íîðìà
    vec.X = vec.X / siz: vec.Y = vec.Y / siz
    ' Êîñèíóñ óãëà
    ang = vec.X * src.d.X + vec.Y * src.d.Y
    ' определяем знак меньше нуля или больше 
    If (vec.X * src.d.Y - vec.Y * src.d.X) < 0 Then dir = IncAngle Else dir = -IncAngle
Миниатюры
Как организовать движение объекта к цели  
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
25.09.2014, 20:43  [ТС]
дело тут в единичном векторе , я сейчас подумал, как менять его направление если на курсоре который передвигается по карте, есть 2 точка.
Миниатюры
Как организовать движение объекта к цели  
0
Модератор
10068 / 3913 / 886
Регистрация: 22.02.2013
Сообщений: 5,863
Записей в блоге: 79
25.09.2014, 21:09
Alex77755, ему не подойдет пример SoftIce. У него объект может двигаться только вперед и поворачивать. У SoftIce'а даже объект не имеет направления.
Цитата Сообщение от Alex77755 Посмотреть сообщение
Зачем какие-то треугольники, векторы, площади, описанные окружности.
Здесь нужны только базовые знания о векторах. Но только ему не нужна величина угла чтобы сделать слежение за объектом, нужно знать только ориентацию. Мой пример полностью удовлетворяет условию задачи, но ТС ничего не понимает в геометрии, поэтому я ему могу посоветовать либо учить ее либо отказаться от затеи.
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
25.09.2014, 23:31  [ТС]
The trick, А прямо написать можешь, мы все когда то узнаем что то новое, вот пришел ты в школу , тебе объяснили. Я же как родился не знаю этого. Если ты скажешь, то я буду знать. http://вырезано я нашел статью, но мне ничего не подсказало это.

Добавлено через 29 минут
Я целый день просидел за компом. С 8 и вот уже 21 : 35 . А так ничего и не добился, мне кажется, это сайт создан, чтобы помогать людям, а не глумиться над ними. Сложно так дать формулу по векторам, тем более , когда сам ее знаешь. Я целый день вымаливаю помощи, а ты ничего не говоришь, только направление показываешь( Скажи хоть тему которую почитать, что это именно за тема. Многим будет интересно узнать это. так если бы это еще кто то знал написали бы. Под конец дня я вымотан до нитки. Я целый день рисую пишу , считаю, а у Модератора, нет даже 5 минут уделить мне времени( Я поспешил говоря про отзывчивость(

Добавлено через 1 час 49 минут
Вот еще один день закончился. Уже неделю , встаю в 8 00 , ложусь в 0 00, 16 часов за компом, все над этой задачей, я ее уже ненавижу, но решить надо( Если The trick, сжалится надомной и понятно легким языком объяснит чтобы было понятно. понятно , что он умнее меня, но ведь умный он на то и умный , знает как правильно объяснить, а если нет, то он просто информированный Хоть бы 1 рисунок нарисовал, я визуал а то только я рисую( Он мне ничего не обязан но, я буду ему благодарен и рад, что The trick остался до конца ! настроение г_вно! Пошел спать! Доброй ночи!
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
26.09.2014, 01:52
Если уж тебе нужен угол в твоей программе и там нет обратных функций можно приблизительно подобрать в цикле до выполнения условия
код для твоей солянки
Code
1
2
3
4
5
6
7
8
9
$var = 0.4  //значение косинуса     
FOR($x, $x < 100)
    if ( $var < cos($x))
            $y=$x
            EXIT_CYC    
        end_if
END_CYC
print("При косинусе Угла ", $var ) 
print("Угол примерно ", $y," градусов")
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
26.09.2014, 08:21  [ТС]
66,4 ну косинус 66.4 = 0.4 не большой ли угол ? Доброе утро кстати. Супер я заболел, горло, температура.
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
26.09.2014, 08:26
Как узнать координаты "синей точки" без определения угла:
Миниатюры
Как организовать движение объекта к цели  
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
26.09.2014, 08:29
не большой ли угол
А каким он должен быть если 0,4 взято с потолка?
Здесь же угол в градусах
0
-1 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 106
26.09.2014, 08:37  [ТС]
Alex77755, так мне можно и не вычислять координаты этой точки, я просто могу сделать проверку по пикселю и все, он выдаст координаты

Добавлено через 6 минут
Alex77755, давай вот так пройдемся по твоей логике и я пойму...

Добавлено через 55 секунд
я изначально как запускаю скрипт , он мне уже выдает координаты красной и синей точки
0
 Аватар для Alex77755
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
26.09.2014, 08:44
И что ты хочешь сделать дальше?
Я так понял, что найти коодинаты второй точки вектора. Не?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.09.2014, 08:44

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Особенности 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