Использую код nilremа, объект слишком чувствителен, + он двигается даже при движении мыши по оси ординат или абсцисс Вот пример и source код, сделайте и вышлите в ЛС плиииз, очень прошу! Скачать (RGhost)
Здравствуйте, у меня возник небольшой вопрос, как вычислить угол поворота игрока по направлению к мыши, есть код:
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; }
А дальше уже код загрузки экрана, изображений и др. Заранее спасибо!
От себя: Решил перевести уроки по hge, перевод я нигде не нашёл, так что, если он есть, скажите мне.
Для начала нам нужно скачать архив со всеми нужными нам файлами, скачать можно отсюда. После скачки нужно разархивировать все файлы в отдельную папку. Заходи в папку include и копируем все файлы оттуда в папку C:/Program Files/Microsoft Visual Studio 10.0/VC/include, далее заходим в папку lib (hge) и копируем все файлы в папку C:/Program Files/Microsoft Visual Studio 10.0/VC/lib. Далее заходим в корневую папку hge и копируем два файла (bass.dll, bass.dll) в папку C:/Windows/System32, чтобы игра работала на других компьютерах необходимо эти два файла размещать вместе с игрой. Далее открываем VC++2010, создаём пустой проект (Файл - Создать - Проект - Пустой проект), нажимаем ПКМ по проекту - свойства - компоновщик - ввод - дополнительные зависимости - стрелка вниз - изменить и пишем hge.lib;hgehelp.lib, нажимаем ОК и переходим к следующему уроку
Туториал 01 - Минимальное HGE приложение Сначала, мы должны включить заголовочный файл hge.h и объявить переменную для хранения HGE указателей интерфейса:
Code
#include <hge.h>
HGE *hge = 0;
Затем мы создаем функцию окна. Функция окна - пользовательская функция, которая будет вызываться в HGE один раз: разместите код игрового цикла здесь. Когда окно возвращает истину, HGE останавливает выполнение цикла игры.
В этом примере мы проверяем, нажата ли была клавиша ESC:
Code
bool FrameFunc() { if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true; return false; }
Функция WinMain это стандартная точка входа в приложениях Winows. Здесь мы будем получать указатель в HGE интерфейсе для доступа к HGE функциям. В этом примере мы используем глобальный указатель в HGE интерфейсе. Вместо этого вы можете использовать hgeCreate функцию каждый раз, когда вам нужен доступ к HGE. Только убедитесь, что есть соответствующий вызов функции для каждого вызова hgeCreate.
Code
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { hge = hgeCreate(HGE_VERSION);
Затем мы устанавливаем какие-то внутренние системы HGE для настройки среды. Хотя большая часть состояний системы имеет соответствующие значения по умолчанию, HGE_FRAMEFUNC должен быть установлен перед вызовом System_Start.
Теперь мы начинаем HGE с установленными функциями. Если что-то пойдет не так, System_Initiate функция возвращает ложь и описание того, что произошло читая с System_GetErrorMessage.
Имея HGE инициализацию мы начинаем цикл игры с призывом функции System_Start. Выполнение «останавливается» здесь, пока возвращается истина из окна функции.
Теперь, если клавиша ESC была нажата или пользователь закрыл окно, с помощью других средств, мы восстанавливаем видеорежим и высвобождаем все выделенные ресурсы. Кроме того, мы должны освободить HGE интерфейс:
Code
hge->System_Shutdown(); hge->Release();
return 0; }
Вуаля! Всего 20 линий кода и окно игры уже функционирует! [spoiler=Весь код]
Code
#include <hge.h> HGE *hge = 0;
bool FrameFunc() { if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true; return false; }
От себя: Решил перевести уроки по hge, перевод я нигде не нашёл, так что, если он есть, скажите мне.
Туториал 01 - Минимальное HGE приложение Сначала, мы должны включить заголовочный файл hge.h и объявить переменную для хранения HGE указателей интерфейса:
Code
#include <hge.h>
HGE *hge = 0;
Затем мы создаем функцию окна. Функция окна - пользовательская функция, которая будет вызываться в HGE один раз: разместите код игрового цикла здесь. Когда окно возвращает истину, HGE останавливает выполнение цикла игры.
В этом примере мы проверяем, нажата ли была клавиша ESC:
Code
bool FrameFunc() { if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true; return false; }
Функция WinMain это стандартная точка входа в приложениях Winows. Здесь мы будем получать указатель в HGE интерфейсе для доступа к HGE функциям. В этом примере мы используем глобальный указатель в HGE интерфейсе. Вместо этого вы можете использовать hgeCreate функцию каждый раз, когда вам нужен доступ к HGE. Только убедитесь, что есть соответствующий вызов функции для каждого вызова hgeCreate.
Code
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { hge = hgeCreate(HGE_VERSION);
Затем мы устанавливаем какие-то внутренние системы HGE для настройки среды. Хотя большая часть состояний системы имеет соответствующие значения по умолчанию, HGE_FRAMEFUNC должен быть установлен перед вызовом System_Start.
Теперь мы начинаем HGE с установленными функциями. Если что-то пойдет не так, System_Initiate функция возвращает ложь и описание того, что произошло читая с System_GetErrorMessage.
Имея HGE инициализацию мы начинаем цикл игры с призывом функции System_Start. Выполнение «останавливается» здесь, пока возвращается истина из окна функции.
Теперь, если клавиша ESC была нажата или пользователь закрыл окно, с помощью других средств, мы восстанавливаем видеорежим и высвобождаем все выделенные ресурсы. Кроме того, мы должны освободить HGE интерфейс:
Code
hge->System_Shutdown(); hge->Release();
return 0; }
Вуаля! Всего 20 линий кода и окно игры уже функционирует!
Code
#include <hge.h> HGE *hge = 0;
bool FrameFunc() { if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true; return false; }
1>------ Построение начато: проект: GAA, Конфигурация: Debug Win32 ------ 1> main.cpp 1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ _hgeCreate@4 в функции _WinMain@16 1>MSVCRTD.lib(crtexe.obj) : error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup 1>c:\users\григорий\documents\visual studio 2010\Projects\GAA\Debug\GAA.exe : fatal error LNK1120: 2 неразрешенных внешних элементов ========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Добавлено (31.08.2011, 12:09) --------------------------------------------- УРА!!! Заработало!!! Тему можно закрывать
Что нужно: Игровой движок В каком пространстве: 2D Для какого жанра игр: TDS Какой вид в игре: сверху На какую игру похожа создаваемая игра, типа какой популярной игры: GTA2 Написанный на каком языке программирования: желательно С++ На каком языке программировать в нём: C++ Для какой платформы: Windows Предоставление исходного кода движка: Не требуется API Direct3D или OpenGL Какой тип лицензии: Бесплатный IDE, компилятор: Microsoft Visual C++ 2010 GUI: удобный визуальный пользовательский интерфейс Предпочтения: бесплатный, активно развивающийся, большое сообщество, наличие документации, простота в освоении (всё не обязательно, кроме бесплатности) Требования к поддержке форматов графики: bmp, png, gif (можно только одно) Требования к поддержке форматов звуков: oqq, mp3, wav, midi (можно только одно) Наличие AI: Хороший Наличие физики: собственный движок для расчёта столкновений Наличие дополнительных редакторов, специальных утилит: редактор локаций, сцен, трасс, ИИ, физики (всё желательно) Смешано:
Ищу хороший, "дружелюбный" 2D движок, для создания игры жанра TDS (Top-Down Shooter, Шутер Сверху-Вниз), движок должен открывать форматы изображений *.png или *.bmp, должен иметь ЯП C++, желателен редактор карт. Он должен либо быть отдельным, либо подключаться к Visual C++ 2010 Express. Вес не имеет значения. Желательно чтобы все кнопки на клавиатуре имели константу а не числовой код. Так же API должен быть DirectX или OpenGL (конечно если другие есть )
С меня репа!
Сообщение отредактировал 4aBo - Среда, 31 Августа 2011, 10:39
Здравствуйте, сейчас мы подключим библиотеку OpenGL на Visual C++ 2010 Express. Для начала нам нужно скачать специальную библиотеку GLUT. Разархивируем файлы в отдельную папку. Далее кидаем два файла, glut.dll и glut32.dll в папку C:/Windews/System32, или в папку с нашей будущей игрой. Далее, кидаем файл glut.h в папку C:/Program Files/Microsoft SDKs/Windows/"Версия"/Include/GL/ и два оставшихся файла (glut.lib, glut32.lib) в папку C:/Program Files/Microsoft SDKs/Windows/"Версия"/Lib. Мы подготовились к разработке. Теперь создаём новый, пустой проект (Файл - Создать - Проект - Консольное Приложение Win32, жмём далее и ставим галку в "Пустой проект", жмём ОК), ПКМ по проекту слева - Свойства - Компоновщик - Ввод, в левом меню есть вкладка "Дополнительные зависимости", жмём на стрелку вниз, выбираем "Изменить" и добавляем следующие строки: opengl32.lib;glut32.lib;glu32.lib Мы всё сделали правильно. Теперь сделаем тест, ПКМ по проекту - Добавить - Создать элемент - Файл C++ (.cpp) и пишем:
Code
#include <GL/glut.h> //Библиотека GLUT
Мы подключили заголовочный файл GLUT, далее пишем:
Code
int main(int argc, char **argv) //Наша главная функция { glutInit(&argc, argv); //инициализация компонентов glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); //Создаём двойной, 3-х цветный буфер glutInitWindowSize(1000, 700); //Задаём размеры окна glutInitWindowPosition(4, 4); //Задаём позицию окна glutCreateWindow("Тесты"); //Задаём имя окна glClearColor(0, 0, 0, 1.0); //Цвет фона по четырём аргументам (Красный, Зелёный, Синий, Альфа-Непрозрачность) glMatrixMode(GL_PROJECTION); //Создаём матрицу glLoadIdentity(); //Загружаем все компоненты glutMainLoop(); //Запускаем основной цикл обработки экрана }
Вот и всё, в следующем уроке мы создадим небольшие примитивы С вами был 4aBo, до скорого!
Сообщение отредактировал 4aBo - Среда, 31 Августа 2011, 09:54