Вопрос по повороту за мышкой в HGE
|
|
MrIncrof | Дата: Четверг, 01 Сентября 2011, 10:16 | Сообщение # 1 |
Lite Programmer
Сейчас нет на сайте
| Здравствуйте, у меня возник небольшой вопрос, как вычислить угол поворота игрока по направлению к мыши, есть код: Code float x=100.0f, y=100.0f; // х и у координаты объекта float dx=0.0f, dy=0.0f; // Куда идти float angle = 0; // Угол поворота игрока float MouseX = 0, MouseY = 0; // Координаты х и у мыши
const float speed=9; // Константа скорости
bool FrameFunc() // Булевая переменная функции кадра { // Получить время, прошедшее с последнего вызова FrameFunc(). // Это поможет нам для синхронизации на различных // Машинах и видео режимах. float dt=hge->Timer_GetDelta();
// Клавиши управления if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true; // Выход из игры при нажатии ESCAPE if (hge->Input_GetKeyState(HGEK_A)) dx-=speed*dt; // Движение влево при нажатии стрелки влево if (hge->Input_GetKeyState(HGEK_D)) dx+=speed*dt; // Движение вправо при нажатии стрелки вправо if (hge->Input_GetKeyState(HGEK_W)) dy-=speed*dt; // Движение вверх при нажатии стрелки вверх if (hge->Input_GetKeyState(HGEK_S)) dy+=speed*dt; // Движение вниз при нажатии стрелки вниз
// Какие-то расчеты движения и обнаружение столкновений dx*=friction; dy*=friction; x+=dx; y+=dy; if(x>784) {x=16;} // Стуканье об стенку при выходе из карты справо... if(x<16) {x=784;} // ...слево... if(y>584) {y=16;} // ...сверху... if(y<16) {y=584;} // ...и снизу.
return false; }
bool RenderFunc() { hge->Input_GetMousePos(&MouseX, &MouseY); // Находим х и у координаты мыши hge->Gfx_BeginScene(); // Начало рисования игрока hge->Gfx_Clear(0); // Очищение spr->RenderEx(x, y, angle, 1.0, 1.0); // Вот функция вывода спрайта на экран hge->Gfx_EndScene(); // Конец рисования игрока
return false; } А дальше уже код загрузки экрана, изображений и др. Заранее спасибо!
|
|
| |
nilrem | Дата: Четверг, 01 Сентября 2011, 10:29 | Сообщение # 2 |
Просветленный разум
Сейчас нет на сайте
| А самому поискать по форуму никак?
http://gcup.ru/forum/62-16802-1
Windmill 2
WindMill 2D Game Engine
|
|
| |
MrIncrof | Дата: Четверг, 01 Сентября 2011, 10:48 | Сообщение # 3 |
Lite Programmer
Сейчас нет на сайте
| nilrem, У меня не работает! + у меня движок HGE
|
|
| |
Kornival | Дата: Четверг, 01 Сентября 2011, 11:00 | Сообщение # 4 |
The Witcher
Сейчас нет на сайте
| 4aBo, не тупи плиз, какая разница какой у тебя двиг?
|
|
| |
noTformaT | Дата: Четверг, 01 Сентября 2011, 11:02 | Сообщение # 5 |
Ukrainian independent game developer
Сейчас нет на сайте
| Quote (4aBo) у меня движок HGE математика, а в данном случае тригонометрия, не зависит от движка. Все что тебе надо, это "угол", а как ты там уже будешь поворачивать - это уже дело самого апи. Формула угла - Атан2 (расстояние по оси у от объекта до мыши, расстояние по оси х от объекта до мыши); Подставь свои переменные и в бой
@noTformaT
|
|
| |
Kornival | Дата: Четверг, 01 Сентября 2011, 11:03 | Сообщение # 6 |
The Witcher
Сейчас нет на сайте
| Может он просто забыл подключить math.h?
|
|
| |
MrIncrof | Дата: Четверг, 01 Сентября 2011, 11:35 | Сообщение # 7 |
Lite Programmer
Сейчас нет на сайте
| Использую код nilremа, объект слишком чувствителен, + он двигается даже при движении мыши по оси ординат или абсцисс Вот пример и source код, сделайте и вышлите в ЛС плиииз, очень прошу! Скачать (RGhost)
|
|
| |
noTformaT | Дата: Четверг, 01 Сентября 2011, 11:44 | Сообщение # 8 |
Ukrainian independent game developer
Сейчас нет на сайте
| Quote (4aBo) Использую код nilremа, объект слишком чувствителен, + он двигается даже при движении мыши по оси ординат или абсцисс Вот пример и source код, сделайте и вышлите в ЛС плиииз, очень прошу! мммм, как я понял тебе надо поворачивать плавно? Твой пример просто поворачивает объект на заданный угол. Повернуть на заданный угол очень просто.
У тебя есть начальный угол, и угол куда тебе надо повернуть. Я думаю тут догадаться не трудно как надо повернуть.
4aBo, это геометрия за седьмой класс, не знать такое - это грех.
@noTformaT
|
|
| |
MrIncrof | Дата: Четверг, 01 Сентября 2011, 11:45 | Сообщение # 9 |
Lite Programmer
Сейчас нет на сайте
| noTformaT, я вот только в 7-ой класс перешёл, так что...
|
|
| |
Kornival | Дата: Четверг, 01 Сентября 2011, 11:46 | Сообщение # 10 |
The Witcher
Сейчас нет на сайте
| Quote (4aBo) объект слишком чувствителен умножай angle на нужный тебе коэффициент. Quote он двигается даже при движении мыши по оси ординат или абсцисс Ничего не понял. ЗЫ ни скомпилить ни запустить не могу.
Сообщение отредактировал Kornival - Четверг, 01 Сентября 2011, 11:46 |
|
| |
Demeron | Дата: Четверг, 01 Сентября 2011, 11:47 | Сообщение # 11 |
User created in C++
Сейчас нет на сайте
| 4aBo, компиль в релиз сборке а не дебаг!!!
|
|
| |
Kornival | Дата: Четверг, 01 Сентября 2011, 11:48 | Сообщение # 12 |
The Witcher
Сейчас нет на сайте
| Quote (Demeron) компиль в релиз сборке а не дебаг!!! Брр, я думал на моем нетбуке каких-то библиотек не хватает
|
|
| |
MrIncrof | Дата: Четверг, 01 Сентября 2011, 11:49 | Сообщение # 13 |
Lite Programmer
Сейчас нет на сайте
| Kornival, при движении мыши только по Х-у объект поворачивается!
|
|
| |
Kornival | Дата: Четверг, 01 Сентября 2011, 11:50 | Сообщение # 14 |
The Witcher
Сейчас нет на сайте
| собирай в релиз сборке и показывай.
Сообщение отредактировал Kornival - Четверг, 01 Сентября 2011, 11:51 |
|
| |
MrIncrof | Дата: Четверг, 01 Сентября 2011, 11:52 | Сообщение # 15 |
Lite Programmer
Сейчас нет на сайте
| Kornival, а как компилировать в релизной сборке?
|
|
| |
Demeron | Дата: Четверг, 01 Сентября 2011, 11:53 | Сообщение # 16 |
User created in C++
Сейчас нет на сайте
| Quote (4aBo) Kornival, а как компилировать в релизной сборке? вверху есть выпадающая строка, а там написано Debug и Release (по стандарту). Выбираешь релиз и оно компилится в папке Release
|
|
| |
MrIncrof | Дата: Четверг, 01 Сентября 2011, 11:54 | Сообщение # 17 |
Lite Programmer
Сейчас нет на сайте
| Понял, но при компилировании ошибка Code 1>------ Построение начато: проект: HGE, Конфигурация: Release Win32 ------ 1>Main.obj : error LNK2001: неразрешенный внешний символ "_hgeCreate@4" 1>Main.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall hgeFont::hgeFont(char const *,bool)" (??0hgeFont@@QAE@PBD_N@Z)" 1>Main.obj : error LNK2001: неразрешенный внешний символ ""public: void __thiscall hgeSprite::RenderEx(float,float,float,float,float)" (?RenderEx@hgeSprite@@QAEXMMMMM@Z)" 1>Main.obj : error LNK2001: неразрешенный внешний символ ""public: __thiscall hgeSprite::hgeSprite(unsigned long,float,float,float,float)" (??0hgeSprite@@QAE@KMMMM@Z)" 1>C:\Users\Григорий\documents\visual studio 2010\Projects\HGE\Release\HGE.exe : fatal error LNK1120: 4 неразрешенных внешних элементов ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ========== А при дебаге её нету
|
|
| |
Kornival | Дата: Четверг, 01 Сентября 2011, 11:55 | Сообщение # 18 |
The Witcher
Сейчас нет на сайте
| В релиз версии надо заново подключать все библиотеки.
|
|
| |
MrIncrof | Дата: Четверг, 01 Сентября 2011, 11:59 | Сообщение # 19 |
Lite Programmer
Сейчас нет на сайте
| Kornival, всё подключил, включаю но воспроизводится звук ошибки, игра выключается но ошибки нету
|
|
| |
Demeron | Дата: Четверг, 01 Сентября 2011, 11:59 | Сообщение # 20 |
User created in C++
Сейчас нет на сайте
| 4aBo, используй лучше в тексте Code #pragma comment(lib,"название библиотеки.lib")
|
|
| |