0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 104
1

Движение 1 объекта к другому объекту

03.08.2018, 09:18. Показов 2588. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как делать так, чтобы объект 1 считывал координаты объекта 2 и двигался к нему?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.08.2018, 09:18
Ответы с готовыми решениями:

Движение объекта
Создайте приложение, осуществляющее движение объекта. Объект в архиве.

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

Как сделать плавное движение объекта?
Есть фигура ,я кликаю в любую точку на форме и надо сделать, чтобы она плавно двигалась к месту...

Как задать движение объекта с ускорением?
Есть код на движение: прописан в таймер. begin //перемещение влево Sr:=Sr +...

4
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.08.2018, 09:31 2
Цитата Сообщение от Jack001 Посмотреть сообщение
считывал координаты объекта 2
А что, объект 2 тоже как-то движется?

Добавлено через 1 минуту
Когда научитесь четко и точно писать условие задачи?
0
0 / 0 / 0
Регистрация: 14.12.2015
Сообщений: 104
03.08.2018, 09:55  [ТС] 3
Не движется, но его можно переставлять.
Если бы двигался, то просто сделал бы Объект1.Left:=Объект2.Left, top...


Добавлено через 21 минуту
Можно вот так например сделать (в таймере)
if 1.left>2.left then 1.left:=1.left-1;
if 1.left<2.left then 1.left:=1.left+1;
if 1.left>2.top then 1.top:=1.top-2;
if 1.left<2.top then 1.top:=1.top+1;
Но тогда объект 1 не двигается по диагонали
Можно сделать 2 таймера: 1 на Left, 2 на Top, тогда двигается
Есть у кого-то идеи как сделать это всё проще?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.08.2018, 10:02 4
Лучший ответ Сообщение было отмечено Jack001 как решение

Решение

Если направление движения объекта 1 к объекту 2 горизонтальное или вертикальное или по углом, кратным 45 градусов, то просто, а если угол другой, то точное попадание точки 1 в точку 2 совсем не гарантировано. Поэтому хорошо применить алгоритм Брезенхема для построения отрезка. Примеры есть у нас на форуме в разделах Делфи и Паскаль точно, можно поискать в инете.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
03.08.2018, 13:32 5
Для примера движение одного круга к другому.
Pascal
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
uses Math;
procedure TForm1.FormCreate(Sender: TObject);
begin
x1:=Shape1.Left+Shape1.Width div 2;
y1:=Shape1.Top+Shape1.Height div 2;
x2:=Shape2.Left+Shape2.Width div 2;
y2:=Shape2.Top+Shape2.Height div 2;
if Shape1.Width>Shape1.Height then r1:=Shape1.Height div 2 else r1:=Shape1.Width div 2;
if Shape2.Width>Shape2.Height then r2:=Shape2.Height div 2 else r2:=Shape1.Width div 2;
dx:=x2-x1;
dy:=y2-y1;
errorX:=0;
errorY:=0;
incX:=sign(dx);
incY:=sign(dy);
dx:=abs(dx);
dy:=abs(dy);
if dy>dx then d:=dy else d:=dx;
currentX:=x1;
currentY:=y1;
Timer1.enabled:=false;
Timer1.Interval:=100;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.enabled:=true;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 errorX := errorX + dx;
 errorY := errorY + dy;
 if(errorX >= d) then
  begin
   errorX := errorX - d;
   currentX := currentX + incX;
  end;
 if(errorY >= d) then
  begin
   errorY := errorY - d;
   currentY := currentY + incY;
  end;
Shape1.Left:=currentX-Shape1.Width div 2;
Shape1.Top:=currentY-Shape1.Height div 2;
if sqrt(sqr(x2-currentX)+sqr(y2-currentY))<=r1+r2 then Timer1.Enabled:=false;
end;
При меняющих свое положение объектах нужно на основании этого написать процедуру, параметрами которой будут x1,y1,x2,y2, и изменить условие окончания движения в данном направлении при смене координат второго объекта.
Вложения
Тип файла: rar Движение Shape по Брезенхему.rar (124.7 Кб, 12 просмотров)
0
03.08.2018, 13:32
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2018, 13:32
Помогаю со студенческими работами здесь

Движение объекта к другому объекту
На углу экрана(без разница где) стоит маленькое изображение коробки, а на других местах другие...

Как сделать перемещение объекта к другому объекту
Я еще новичок, но... Надо чтобы при нажатии на объект1 он находил бы на сцене объект2 и...

Почему допустимо создавать объект по другому объекту, но нельзя присваивать уже созданный объект, другому созданному объекту?
Это можно : Array a(10); a.set(0,5); Array b(a); А это нельзя : Array a(10); Array b(20);...

Как присвоить значения из одного объекта другому объекту?
у меня два объекта, мне надо присвоить значения из одного объекта другому объекту, как это можно...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru