Четверг, 09 Мая 2024, 23:33

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Программирование » C/C++ » Вопрос по повороту за мышкой в HGE
Вопрос по повороту за мышкой в 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 (расстояние по оси у от объекта до мыши, расстояние по оси х от объекта до мыши);
Подставь свои переменные и в бой smile


@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)
компиль в релиз сборке а не дебаг!!!

Брр, я думал на моем нетбуке каких-то библиотек не хватает dry
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")
Форум игроделов » Программирование » C/C++ » Вопрос по повороту за мышкой в HGE
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг