|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
16.01.2010, 17:09 | #1 |
Форумчанин
Регистрация: 30.07.2009
Сообщений: 256
|
Движение на движке OMEGA ENGINE
Пытаюсь создать игру на движке OMEGA ENGINE, но возникла проблема. В моей игре юнит движется в точку, куда кликнула мышь. Но возникает неприятный эффект. Например если я кликнул немного выше юнита, но намного правее юнита, он двигается, одновременно увеличивая х и у, сначало верх по диагонали, а потом по прямой направо.
А как сделать так, чтобы юнит двигался равномерно и точно по прямой линии в заданную точку? Вот участок моего кода Код:
|
16.01.2010, 17:22 | #2 |
Участник клуба
Регистрация: 06.03.2009
Сообщений: 1,346
|
Мне нужно рассчитать скорость по X и по Y такую, чтобы расстояние по X и Y юнит проходил за одно и то же время. То есть если по X большое расстояние а по Y маленькое то надо по X большую скорость а по Y маленькую.
|
16.01.2010, 19:09 | #3 |
Форумчанин
Регистрация: 30.07.2009
Сообщений: 256
|
Я пробовал, но тогда юнит начал двигаться неравномерно
|
16.01.2010, 19:21 | #4 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Gapro выполняйте условие, как говорит Вадим Буренков, сравнивайте расстояние до точки по-X и по-Y, большее из них делите на меньшее узнаете приращение движения, ...разумеется от 1 для большего.
Например, был в точке (X4,Y4) и перемещается в (X6,Y9). Сравниваем, узнаем, что Y - путь длиннее, делим Abs(Y9-Y4)/Abs(X6-X4) - получится на сколько нужно задержать скорость для меньшего пути, в данном случае к Y каждый такт прибавляется 1, а к Y прибавляется 1 только через 2,5 такта, ...разумеется, нужно округлять данные через Round.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
16.01.2010, 19:43 | #5 |
Форумчанин
Регистрация: 30.07.2009
Сообщений: 256
|
Я так и делал, но например если Y увеличивается намного сильнее X, то он перемещается с намного большей скоростью, а нужно чтобы равномерно(
|
16.01.2010, 21:53 | #6 |
Инженер ИС
Старожил
Регистрация: 13.12.2006
Сообщений: 2,671
|
Если задается меньшая скорость для одной из координат, то скорость для другой координаты должна быть начальной. Если оба значения расстояний равны, обе скорости должны быть начальными. Т.е. ускорений нет, есть замедление и исходная.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
|
17.01.2010, 16:40 | #7 |
Капсула от спама
Форумчанин
Регистрация: 04.03.2008
Сообщений: 779
|
Код:
Если данный ответ не столь конкретен, как Вы желаете его увидеть, возможно необходимо поразмыслить, стоит ли вопрос того, чтобы о нём спрашивать на форуме?
CncFiles.ru - бесплатный файловый хостинг |
17.01.2010, 18:54 | #8 |
Форумчанин
Регистрация: 30.07.2009
Сообщений: 256
|
Да, я понял это способ, но равномерно двигаться он все равно небудет, например ровно по диагонали он будет медленно перемещаться, а почти по прямой переместится очень быстро...
|
09.03.2010, 21:26 | #9 | |
Форумчанин
Регистрация: 30.07.2009
Сообщений: 256
|
Цитата:
|
|
11.03.2010, 06:24 | #10 |
Люблю жизнь
Форумчанин
Регистрация: 01.12.2009
Сообщений: 193
|
Необходимо найти скорости X и Y, являющиеся катетами треугольника. Гипотенуза-это константа, скорость движения в плоскости. По теореме Пифагора V^2=Y^2+X^2. Выражаем Y через Х или Х через Y, учитывая их соотношение. Например, если Х вдвое больше Y, то уравнение принимает вид V^2=Y^2+(2Y)^2. Выражаем единственное неизвестное (в данном случае Y), затем через Y выражаем X.
Не стыдно не уметь, стыдно не учиться.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Engine | as345 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 0 | 14.01.2010 15:19 |
Игра на движке Torque Game Engine Advanced | Pasha199 | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 3 | 08.07.2009 00:58 |
omega | benjaminfran | Компоненты Delphi | 5 | 26.02.2008 11:44 |
Не могу проинсталлировать OMEGA | V-int | Компоненты Delphi | 4 | 04.11.2007 14:11 |
Aquatica engine | MagicIndie | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 4 | 23.04.2007 18:33 |