Форум программистов, компьютерный форум CyberForum.ru

Ищу нормальную формулу для полета пули (прямо с одинаковой скоростью в указанном направлении) - C++

Восстановить пароль Регистрация
 
saharok2000
1 / 1 / 0
Регистрация: 01.07.2014
Сообщений: 49
10.04.2016, 12:12     Ищу нормальную формулу для полета пули (прямо с одинаковой скоростью в указанном направлении) #1
в игре перс стреляет пулями в сторону курсора
у меня есть координаты курсора во время нажатия пкм
C++
1
float cx, cy;
положение персонажа во время стрельбы
C++
1
float px, py;
игровое время
C++
1
float time;
x и y - положение пули
пуля летит по вот такой уродской формуле:
C++
1
2
3
double distance = sqrt((сx - x)*(сx - x) + (сy - y)*(сy - y));
x += 0.8*time*(сx - px) / distance;
y += 0.8*time*(сy - py) / distance;
при этом ведет себя весьма странно: летит с разными скоростями, телепортируется
может вы знаете нормальную формулу для полета пули(прямо с одинаковой скоростью в указанном направлении)
а то я не могу понять что делать
(мне кажется ответ очень близок, я просто чрезмерно туплю)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.04.2016, 12:12     Ищу нормальную формулу для полета пули (прямо с одинаковой скоростью в указанном направлении)
Посмотрите здесь:

Вывести формулу для решения C++
Как сделать нормальную инсталяшку для программы? C++
C++ Cоставить формулу дисперсии для массива чисел
Определить дальность полета C++
Для вычисления слагаемого суммы вывести рекуррентную формулу C++
C++ В правильном ли направлении я иду? (Разработать программу для составления списка заданий для параллельных процессоров)
C++ Не могу подобрать формулу для расчётов с банком
C++ Как правильно записать формулу для этого уравнения?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dcshowcousa
25 / 17 / 48
Регистрация: 22.10.2015
Сообщений: 303
10.04.2016, 12:30     Ищу нормальную формулу для полета пули (прямо с одинаковой скоростью в указанном направлении) #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
saharok2000,
C++
1
double distance = sqrt((сx - px)*(сx - px) + (сy - py)*(сy - py));
DemolitionMan
 Аватар для DemolitionMan
22 / 54 / 18
Регистрация: 06.04.2016
Сообщений: 325
10.04.2016, 12:55     Ищу нормальную формулу для полета пули (прямо с одинаковой скоростью в указанном направлении) #3
Вместо этого:
C++
1
double distance = sqrt((сx - x)*(сx - x) + (сy - y)*(сy - y));
Нужно написать вот это:
C++
1
double distance = sqrt((сx - px)*(сx - px) + (сy - py)*(сy - py));
Нужно найти угол прямой:
C++
1
float k = y/x;
Задаем вермя таймера 100 мс.
По событию таймера вызываем движение пули:
C++
1
2
dx = 1;// или x += 1
dy = k;
Добавлено через 12 минут
Ну если у тебя системное время, то тогда нужно написать примерно так:
C++
1
2
3
4
5
6
7
8
9
10
int step = 100,//шаг времени
period = 0,//номер периода
bulletx = px, bullety = py;
for(;;){
if(time%step == 0){
period++;
dx = 1;// или x += 1
dy = k;
bulletx += dx,
bullety += dy;}}
Ну и как говорится:
C++
1
Timer1->Enabled = true;
Yandex
Объявления
10.04.2016, 12:55     Ищу нормальную формулу для полета пули (прямо с одинаковой скоростью в указанном направлении)
Ответ Создать тему
Опции темы

Текущее время: 15:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru