ria pc game
translate to English   translate to Chinese
fle game engine - движок для создания игр
fle game engine - движок для создания игр


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
21 марта 2019 14:39
Вход Регистрация Забыли пароль ?

megainformatic - Как создать игру ? - Программируем сами - Самый первый шаг - страница 3
       
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
Balls on Lift / Шарики на лифте - Как создать игру - серия уроков - Вставка созданной графики, звуков и музыки в игру - Inserting created graphics, sounds and music in the game.

Balls on Lift / Шарики на лифте + Как создать игру - бесплатная игра + комплект уроков о том, как создавать контент для игры - спрайты, фоны, звуки, музыку, и вставить его в игру - How to create a game - free game + package of lessons on how to create content for the game - sprites, backgrounds, sounds, music, and insert it into the game

Balls on Lift / Шарики на лифте + Как создать игру - бесплатная игра + комплект уроков о том, как создавать контент для игры - спрайты, фоны, звуки, музыку, и вставить его в игру - How to create a game - free game + package of lessons on how to create content for the game - sprites, backgrounds, sounds, music, and insert it into the game

Развитие проекта fle game engine

Бинарная философия / Binary Philosofy

megainformatic - Костя Коробкин - В гостях у тёти Светы часть 2 Живые машины (kk as) - онлайн комикс - страница 14

Вакансии

Коллекция php скриптов

megainformatic - Костя Коробкин - В гостях у тёти Светы часть 2 Живые машины (kk as) - онлайн комикс - страница 15

megainformatic - Приключения Кости Коробкина - В гостях у тёти Светы часть 1 - интерактивный комикс

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс

fle game generator - fle генератор игр - fly snow 3d падающий снег - расширяемый генератор визуальных образов, с музыкой mp3, ogg и генерацией игр

fle game generator - fle генератор игр - fly snow 3d падающий снег - расширяемый генератор визуальных образов, с музыкой mp3, ogg и генерацией игр

megainformatic - Костя Коробкин - В гостях у тёти Светы часть 2 Живые машины (kk as) - онлайн комикс - страница 16

megainformatic Создание и размещение видео баннера mp4

megainformatic Использование баннер-ротатора

megainformatic fle game engine Simple game / Пример простой игры

megainformatic fle game engine Simple game / Пример простой игры - страница 1 - Спрайты

Creating game on fle game engine - Draw Line - This can be helpful/ Создание игры на fle game engine - Рисование линий - Это может пригодиться.

Платная подписка на fle game engine

megainformatic Создание игры на fle game engine - Simple game - страница 2 - Объекты / Пример простой игры

megainformatic Создание игры на fle game engine - Simple game - страница 3 - Объекты / Пример простой игры

Платная подписка на fle game engine

megainformatic Создание игры на fle game engine - Simple game - страница 4 - Код - Настройка параметров Scene Editor fge и написание кода для вывода спрайта шарика в вашем первом игровом приложении / Пример простой игры

megainformatic Создание игры на fle game engine - Simple game - страница 5 - Отображаем прыгающий шарик, узнаем как задается для спрайта его центр и знакомимся с векторной системой координат / Пример простой игры

megainformatic Создание игры на fle game engine - Simple game - страница 6 - Загрузка игровой сцены / Пример простой игры

megainformatic Создание игры на fle game engine - Simple game - страница 7 - Перемещения игровой сцены / Пример простой игры

megainformatic Создание игры на fle game engine - Simple game - страница 8 - Закрываем часть сцены от пустот при помощи черной текстуры с прорезью, ограничиваем перемещение сцены / Пример простой игры

megainformatic Создание игры на fle game engine - Simple game - страница 9 - Реализуем корректное попадание в ямы и около ям - определяем границы спрайтов ям и спрайта прыгаюшего шарика / Пример простой игры

megainformatic Создание игры на fle game engine - Simple game - страница 10 - Проверка столкновений / Пример простой игры

megainformatic Создание игры на fle game engine - Simple game - страница 11 - Игровой счёт, звуки, музыка / Пример простой игры

megainformatic Создание игры на fle game engine - Simple game extended - страница 1 - Создание новой сцены (уровня, комнаты), добавление новых возможностей / Пример простой игры - расширенная версия

Платная подписка на simple game fle game engine версия 1.0.7 от 05.01.2017

Платная подписка на simple game fle game engine версия 1.0.7 от 05.01.2017

Советы копирайтеру - как не обмануть и не быть обманутым

Balls and Holes игра скачать + как создать игру на fle game engine

Balls and Holes игра скачать + как создать игру на fle game engine

Something: Unexplained 2 captive of desires

KKK Коллекционное издание: Веселый Буквоежка Комикс + Костя Коробкин Комикс + Нечто: Необъяснимое в плену желаний 2 начало

KKK Коллекционное издание: Веселый Буквоежка Комикс + Костя Коробкин Комикс + Нечто: Необъяснимое в плену желаний 2 начало

megainformatic - Костя Коробкин - В гостях у тёти Светы часть 2 Живые машины (kk as) - онлайн комикс - страница 17

megainformatic - Игродельня

megainformatic - Новости страница 542

megainformatic - С днём защитника отечества !

megainformatic fle game engine fle / Пример простой игры fle - Скроллинг больших локаций

megainformatic - Костя Коробкин - В гостях у тёти Светы часть 2 Живые машины (kk as) - онлайн комикс - страница 18

megainformatic - Шарики и Ямки игра PC

megainformatic - Шарики и Ямки игра PC

megainformatic fle game engine fle / Изучаем основы c++ - переменные на примере реального игрового проекта Balls and Holes

megainformatic - Реферальная ссылка

megainformatic - Изменение постоянных свойств в зависимости от контекста

megainformatic - Костя Коробкин Компания Зергов онлайн комикс читать

megainformatic - Искатели приключений Зеленый Шарик

megainformatic - Без названия

megainformatic - Мульти анимация

Pencil, Paper and the Ball PC game

подробнее

Creating game on fle game engine - Simple game / Создание игры на fle game engine - Simple game

15. Мульти анимация



read paper in english

В данном уроке мы проведем своего рода быстрый старт - это введение в создание игр в среде fle game engine.





Содержание

страница 1 - Спрайты

страница 2 - Объекты

страница 3 - Наложение объектов

страница 4 - Код - Настройка параметров Scene Editor fge и написание кода для вывода спрайта шарика в вашем первом игровом приложении

страница 5 - Отображаем прыгающий шарик

страница 6 - Загрузка игровой сцены

страница 7 - Перемещения игровой сцены

страница 8 - Закрываем часть сцены от пустот при помощи черной текстуры с прорезью, ограничиваем перемещение сцены

страница 9 - Реализуем корректное попадание в ямы и около ям - определяем границы спрайтов ям и спрайта прыгаюшего шарика

страница 10 - Проверка столкновений

страница 11 - Игровой счёт, звуки, музыка

урок #2 страница 1 - Создание новых сцен для игры simple game, расширенная версия simple game extended

13. Скроллинг больших локаций

14. использование переменных в игре на c++ directx 9c

15. Мульти анимация







Прошло совсем немного времени с момента написания урока про Спрайты.

Тема данного урока - изучить как можно использовать в игре не один, а несколько спрайтов. У одного персонажа анимаций может быть несколько: прыжки, хотьба, какие-то иные действия и т. п.

Это есть не что иное как МНОЖЕСТВЕННЫЕ АНИМАЦИИ, поэтому я и назвал урок Мульти анимация.

Мы будем рассматривать как использовать несколько анимаций относящихся к одному и тому же персонажу - в нашем случае - к Зеленому Шарику.



Вы можете заметить: что нового в мультианимации по сравнению с обычной ? Ведь что одна, что много - работа с ними ведется по-сути одинаково.

Да, вы это справедливо заметили, но не все так просто.

Хорошо, когда все анимации у вас циклические и неважно когда остановить анимацию. Например наш шарик - он прыгает постоянно и для нас совершенно неважно на каком текущем кадре он сейчас. Все эти кадры просто воспроизводятся циклически и бесконечно.

Но как быть когда анимацию нужно показать лишь однократно ? Причем важно чтобы она остановилась именно на нужном кадре, а не любом ?

Вот эти особенности я и хотел бы рассмотреть в статье, т. е. увязку множества анимаций как количественно, так и качественно в плане программной их части.

Помимо этого, можно коснуться немного реализации логики воспроизведения анимаций. Одни анимации нужно показывать при одних условиях, другие - при иных и все это реализуется функционалом программной части.

Художник может лишь показать на спрайте, что с ним происходит, а задача программиста не только показать созданный спрайт, но и реализовать условия по которым этот спрайт будет отображен в игре. Помимо этого нужно еще и запрограммировать особенности воспроизведения самой анимации: будет ли она (опять же) цикличной или однократной. Может быть она будет реверсивной - воспроизводимой в обратном порядке от конца к началу. И т. п.



Анимация Дразнящего Шарика - на последнем кадре задержка для демонстрации показа как бы однократной анимации



Вот методы, которые нужно объявить в классе CGameSprite, для того, чтобы использовать однократно воспроизводимую анимацию Дразнящего Шарика.

//анимация Дразнящего Шарика (показывает язык)
void Draw_Showing_Tongue();
void Anim_Showing_Tongue();
float m_fShowing_Tongue_Sprite_Frame;

bool m_bAnim_Showing_Tongue_Stopped; //завершилась ли анимация Дразнящего Шарика
void Start_Showing_Tongue_Anim();
void Restart_Showing_Tongue_Anim();


Суть реализации заключается в следующем: при определенном условии - например если в течение 15 секунд подряд шарик ни разу не был пойман в ямку должна быть показана данная анимация - однократно - т. е. показана с начала и с остановкой на последнем кадре.

Метод Draw_Showing_Tongue() отрисовывает текущий кадр анимации шарика.

Anim_Showing_Tongue() - выполняет анимирование, т. е. переключение кадров при изменении счетчика времени.

Поле - m_fShowing_Tongue_Sprite_Frame запоминает текущий кадр анимации и нужно для того, чтобы один и тот же спрайт мог использоваться независимо разными игровыми объектами. Для этого просто каждый игровой объект должен иметь у себя такое поле.

Тогда, перед выполнением анимации игровой объект запоминает текущий кадр спрайта, передает ему свой текущий кадр, выполняет анимацию, затем запоминает на каком кадре он остановился и возвращает спрайту его текущий кадр.

Поле - m_bAnim_Showing_Tongue_Stopped служит для фиксации момента завершения анимационной цепочки. Если цепочка закончилась - то поле получит значение true. Таким образом приложение будет знать, что анимация спрайта закончилась и можно переходить к другим действиям. В моем примере - снова будет отображаться анимация обычного прыгающего шарика.

Ну и наконец метод Start_Showing_Tongue_Anim() используется приложением для запуска анимации. В моем примере - если в течение 15 секунд шарик ни разу не был пойман в ямку, то будет вызван данный метод и запущен процесс показа этой анимации.

Когда анимация закончилась нужно, чтобы при следующем вызове Start_Showing_Tongue_Anim() она снова началась с 0 кадра. Для этого и служит метод Restart_Showing_Tongue_Anim().

Вот собственно и все.

Теперь вы наверное, хотели бы увидеть реализацию все описанных методов.

Пожалуйста, ознакомтесь.


//анимация Дразнящего Шарика (показывает язык)
void CGameSprite::Draw_Showing_Tongue()
{
LPD3D9SPRITE usedSprite = NULL;

int ball_sprite = ball_showing_tongue;

if ( m_iCurrentSprite == SpriteTexIndex )
ball_sprite = ball_showing_tongue;

if ( m_iCurrentSprite == ball_jump_red_SpriteTexIndex )
ball_sprite = ball_showing_tongue_red; //для красного шарика используется свой спрайт

usedSprite = GetGameSprite(ball_sprite, g_AI_Ball_Sprite.m_pTextures);

float OldFrame;
if ( usedSprite != NULL )
{
OldFrame = usedSprite->Frame;
usedSprite->Frame = m_fShowing_Tongue_Sprite_Frame;

Vector2Screen(&m_v2VectorPos, &m_v2Pos); //переводим векторные координаты //в пиксельные
usedSprite->m_v2Vector2ScreenPos = m_v2Pos;

//выполняем отрисовку спрайта по указанным координатам и с указанным масштабом usedSprite->Draw2(
m_v2Pos.x,
m_v2Pos.y,
m_vBallZ,
usedSprite->m_Scale.x,
usedSprite->m_Scale.y,
255);

usedSprite->Frame = OldFrame;
}
}

void CGameSprite::Anim_Showing_Tongue()
{
LPD3D9SPRITE usedSprite = NULL;

int ball_sprite = ball_showing_tongue;

if ( m_iCurrentSprite == SpriteTexIndex )
ball_sprite = ball_showing_tongue;

if ( m_iCurrentSprite == ball_jump_red_SpriteTexIndex )
ball_sprite = ball_showing_tongue_red; //здесь аналогично - для красного шарика свой спрайт

usedSprite = GetGameSprite(ball_sprite, g_AI_Ball_Sprite.m_pTextures);

float OldFrame;

if ( usedSprite != NULL )
{
OldFrame = usedSprite->Frame;
usedSprite->Frame = m_fShowing_Tongue_Sprite_Frame;

usedSprite->FrameMove_StopOnEndFrame(g_fElapsedTime, &m_bAnim_Showing_Tongue_Stopped);

m_fShowing_Tongue_Sprite_Frame = usedSprite->Frame;
usedSprite->Frame = OldFrame;
}
}



void CGameSprite::Start_Showing_Tongue_Anim()
{
m_bAnim_Showing_Tongue_Stopped = false;
m_dwAnimState = BAS_SHOWING_TONGUE; //когда была запущена данная анимация выставляем у объекта //такое состояние
//чтобы знать какой метод использовать для его отрисовки и анимирования }

void CGameSprite::Restart_Showing_Tongue_Anim()
{
m_fShowing_Tongue_Sprite_Frame = 0.0f;
}
На этом все.

[назад] [далее]

подробнее

Creating game on fle game engine - DirectX 9c Draw Line - This can be helpful/ Создание игры на fle game engine - Рисование линий - Это может пригодиться.

read paper in english

Цель данного урока проста - показать как средствами directx 9c рисуются линии.

Иногда это бывает необходимо. Например в редакторе сцены Scene Editor этим способом рисуется сетка (grid), служащая для точного позиционирования игровых объектов в сцене.

Создание игры во fle game engine - Рисование линий - Это может пригодиться

В документации по directx 9c приводится интерфейс ID3DXLine, а также его методы, которые нужно использовать для рисования линий.

Однако нет полноценного примера как применяется это всё вместе.

Мы восполним этот пробел, а в завершении урока Вы сможете скачать готовый результат.

Всё что вам нужно - это иметь базовый исходный код, для создания простого directx 9c приложения (его Вы тоже сможете скачать), а также несколько десятков строк кода, который потребуется чтобы выполнить рисование линий средствами directx 9c.

Суть состоит в следующем:

в модуле start.h внутри класса CD3DGameApp объявляем такие поля и методы:

//draw line
ID3DXLine* m_pLine;
void CreateLine(IDirect3DDevice9* pd3dDevice);
void LineOnLostDevice();
void LineOnResetDevice();
void FillPixel(int x, int y, int w, int h, DWORD color);
void FreeLine();
void DrawPoint(float x, float y, DWORD color);
void DrawLine(float x, float y, float x2, float y2, float width, DWORD color);

в модуле start.cpp реализуем их.


CD3DGameApp::CD3DGameApp()
{
//...
m_pLine = NULL;

void CD3DGameApp::CreateDeviceObjects(IDirect3DDevice9* pd3dDevice) { CreateLine(pd3dDevice); } HRESULT CD3DGameApp::RestoreDisplayObjects(IDirect3DDevice9* pd3dDevice) { //... LineOnResetDevice(); } HRESULT CD3DGameApp::DestroyDisplayObjects() { //... FreeLine(); } HRESULT CD3DGameApp::InvalidateDisplayObjects() { //... LineOnLostDevice(); } //draw line
void CD3DGameApp::CreateLine(IDirect3DDevice9* pd3dDevice)
{
D3DXCreateLine(pd3dDevice, &m_pLine);

}

void CD3DGameApp::LineOnLostDevice()
{
if ( m_pLine != NULL )
{
m_pLine->OnLostDevice();
}
}

void CD3DGameApp::LineOnResetDevice()
{
if ( m_pLine != NULL )
{
m_pLine->OnResetDevice();
}
}

void CD3DGameApp::FillPixel(int x, int y, int w, int h, DWORD color)
{
D3DXVECTOR2 vLine[2];

if ( m_pLine != NULL )
{

m_pLine->SetWidth( (float)w );
m_pLine->SetAntialias( false );
m_pLine->SetGLLines( true );

vLine[0].x = (float)(x + w/2);

vLine[0].y = (float)y;
vLine[1].x = (float)(x + w/2);
vLine[1].y = (float)(y + h);

m_pLine->Begin();
m_pLine->Draw( vLine, 2, color );
m_pLine->End();

}

}

void CD3DGameApp::FreeLine()
{
SAFE_RELEASE( m_pLine );
}

void CD3DGameApp::DrawPoint(float x, float y, DWORD color)
{
FillPixel((int)x, (int)y, 1, 1, color);
}

void CD3DGameApp::DrawLine(float x, float y, float x2, float y2, float width, DWORD color)
{
D3DXVECTOR2 vLine[2];

if ( m_pLine != NULL )
{

m_pLine->SetWidth( width );
m_pLine->SetAntialias( false );
m_pLine->SetGLLines( true );
vLine[0].x = x;
vLine[0].y = y;
vLine[1].x = x2;
vLine[1].y = y2;
m_pLine->Begin();
m_pLine->Draw( vLine, 2, color );
m_pLine->End();

}
}

void CD3DGameApp::DrawGameView() { //draw line DrawPoint(30.0f, 30.0f, 0xFFFF0000); DrawLine(10.0f, 50.0f, 300.0f, 50.0f, 1.0f, 0xFFFFFF00); DrawLine(80.0f, 210.0f, 400.0f, 120.0f, 2.0f, 0xFF00FF00); DrawLine(500.0f, 310.0f, 200.0f, 80.0f, 1.0f, 0xFFFFC017); }

Вот и всё ! Таким образом мы научились рисовать точки и линии произвольного цвета и положения. В коде цвета можно использовать и значение альфа - первая пара чисел, она будет задавать полупрозрачность изображаемого примитива. 0xFFFFC017 - FF - значение альфа, т. е. 255.

Объект линии - m_pLine проходит все те же стадии, что и любой другой directx 9c объект: создание CreateLine, сброс LineOnResetDevice, инвалидацию LineOnLostDevice, освобождение FreeLine, ну и конечно отрисовку DrawLine. Если Вы захотите анимировать линии, тогда вам еще будет нужно реализовать метод анимации, например AnimLine, вызываемый из метода CD3DGameApp::FrameMove вашего приложения.

Скачать пример Draw Line с полным исходным кодом (524 Kb).





Для нормальной сборки проекта вам потребуется DX SDK Aug 2008 и среда разработки MSVS 2005

Подробнее о настройках проекта читайте в приложенном внутри самораспаковывающегося архива файле readme.txt

к содержанию

подробнее

Creating game on fle game engine - Simple game / Создание игры на fle game engine - Simple game

5. Отображаем прыгающий шарик, узнаем как задается для спрайта его центр и знакомимся с векторной системой координат



read paper in english

Итак, если Вы смогли самостоятельно разобраться и всё-таки шарик стал виден на экране вашего приложения, то могу Вас поздравить !





Содержание

страница 1 - Спрайты

страница 2 - Объекты

страница 3 - Наложение объектов

страница 4 - Код - Настройка параметров Scene Editor fge и написание кода для вывода спрайта шарика в вашем первом игровом приложении

страница 5 - Отображаем прыгающий шарик

страница 6 - Загрузка игровой сцены

страница 7 - Перемещения игровой сцены

страница 8 - Закрываем часть сцены от пустот при помощи черной текстуры с прорезью, ограничиваем перемещение сцены

страница 9 - Реализуем корректное попадание в ямы и около ям - определяем границы спрайтов ям и спрайта прыгаюшего шарика

страница 10 - Проверка столкновений

страница 11 - Игровой счёт, звуки, музыка

урок #2 страница 1 - Создание новых сцен для игры simple game, расширенная версия simple game extended

13. Скроллинг больших локаций

14. использование переменных в игре на c++ directx 9c

15. Мульти анимация







Вы преодолели первую трудность. Хотя их будет еще много впереди.

Для тех, кто так и не понял в чём была проблема, поясняю.

simple_game\Media\textures\simple_game\tex_list.txt



ball\jump.tga; -0.7f; 0.1f; 0.909f; 0.5f; 0.5f; 64; 128; 0; 0; 4; 8.0f; 14.0f;

Чтобы шарик выводился значение z = 0.909f надо изменить на такое, чтобы шарик стал виден. Например, z = 0.8999f

При больших значениях шарик оказывается выводимым "за фоном". Поэтому-то его и не видно. Фон имеющий координату z = 0.9f, по сравнению с шариком имеющим координату z = 0.909f, оказывается ближе к наблюдателю (значения z меньшие - ближе к наблюдателю, большие - дальше от наблюдателя), и просто перекрывает его.

Если Вы внимательно посмотрите на код, который вставляли по инструкции на странице 4, то наверное догадаетесь, что методы

4)
g_Splash.Anim(); //это то, что вы нашли
g_AI_Ball_Sprite.Anim(); //это то, что вы должны добавить


5)
g_Splash.Draw(); //это то, что вы нашли
g_AI_Ball_Sprite.Draw(); //это то, что вы должны добавить


Анимируют и отрисовывают наш шарик.

Попробуйте закомментировать один из них - g_AI_Ball_Sprite.Draw() или g_AI_Ball_Sprite.Anim() и перекомпилируйте приложение.

//g_AI_Ball_Sprite.Anim(); //если закомментируем эту строчку - шарик перестанет анимироваться, т. е. не будет прыгать


Выводим шарик

Если же закомментируем g_AI_Ball_Sprite.Draw()

//g_AI_Ball_Sprite.Draw(); //если закомментируем эту строчку - шарик перестанет быть виден вообще.


Теперь давайте ознакомимся с особенностями вывода спрайтов в играх.
Откройте файл
simple_game\Media\textures\simple_game\tex_list.txt



И посмотрите на параметры нашего шарика -

ball\jump.tga; -0.7f; 0.1f; 0.8999f; 0.5f; 0.5f; 64; 128; 0; 0; 4; 8.0f; 14.0f;

Если Вы читали readme.txt приложенный к утилите Coords2D, которая позволяет настраивать параметры спрайтов и их анимаций, то знаете, что означает каждый из параметров.

Начнём по-порядку.

name x y z xScale yScale Width Height xOffset yOffset FramesPerLine FramesNum AnimDelay;
ball\jump.tga; -0.7f; 0.1f; 0.8999f; 0.5f; 0.5f; 64; 128; 0; 0; 4; 8.0f; 14.0f;


name - означает имя файла загружаемого спрайта;

x, y, z - координаты его вывода на экран. Причём x и y могут быть векторными - значения которых не зависят от текущего разрешения экрана и могут быть экранными заданными в пикселях - зависящими от разрешения экрана.

Векторные координаты имеют значения от -1.0f до 1.0f и являются универсальными, позволяя выводить спрайты на любых разрешениях экрана в приблизительно одинаковых его частях. Не требуют предпринимать никаких дополнительных мер, чтобы учесть текущее разрешение экрана пользователя, на котором работает приложение.

Чуть ниже мы разберемся как использовать и те и другие.

xScale, yScale - масштаб выводимого спрайта по x и y - значение 1.0f - выводить спрайт в натуральном размере. Значения меньшие 1.0f - уменьшать спрайт, значения большие - увеличивать.

Width, Height - ширина и высота спрайта в пикселях.

xOffset, yOffset - смещение до начала спрайта в пикселях. Имеет смысл если спрайт внутри изображения размещен со смещением или используется мультиспрайт - т. е. изображение, содержащее внутри себя несколько разных спрайтов.

Узнать больше о создании и вставке спрайтов в вашу игру можно также в серии уроков - Шарики на лифте - Как создать игру, в частности урок Как создать игру - Вставка созданной графики, звуков и музыки в игру подробно описывает в том числе и работу по вставке в игру спрайтов и правильное описание их параметров.

FramesPerLine - число кадров в одной линии по оси X, для оси Y это не применяется;

FramesNum - число кадров в анимации спрайта;

AnimDelay - задержка по времени между показом кадров спрайта в долях секунды. Определяет, таким образом, скорость показа анимации.





Если всё понятно - перейдем к экспериментам.

Для начала попробуем вывести наш шарик в центре экрана.

Для этого всего лишь нужно снова открыть файл

simple_game\Media\textures\simple_game\tex_list.txt



И задать x = 0.0f, y = 0.0f -

ball\jump.tga; 0.0f; 0.0f; 0.8999f; 0.5f; 0.5f; 64; 128; 0; 0; 4; 8.0f; 14.0f;

Сохранить изменения и перезапустить приложение simple_game, если оно у Вас было запущено.

Шарик будет выведен почти в центре экрана, но немного ниже его.

Шарик в центре экрана

Ниже, потому что, если Вы помните, анимация нашего шарика выглядит так -

прыгающий шарик

прыгающий шарик

Поэтому позиционируя спрайт в центр экрана, мы получим небольшое смещение вниз - потому что внутри самого спрайта шарик смещен вниз. Иными словами центр спрайта - это его левый верхний угол, а не центр шарика.

Поэтому, когда Вы будете выводить спрайты в игре, учитывайте возможное смещение их центра и вводите соответствующую поправку.

Так, чтобы наш шарик оказался точно в центре экрана, в коде его вывода в модуле

simple_game\scripts\game_sprite\game_sprite.cpp

Нужно найти строку кода

CGameSprite::Draw

и имеющийся там код -

SpriteSprite->m_v2Vector2ScreenPos.x = SpriteSprite->m_Position.x;
SpriteSprite->m_v2Vector2ScreenPos.y = SpriteSprite->m_Position.y;


изменить на

SpriteSprite->m_v2Vector2ScreenPos.x = SpriteSprite->m_Position.x - 0.05f;
SpriteSprite->m_v2Vector2ScreenPos.y = SpriteSprite->m_Position.y + 0.2f;


сохранить изменения, перекомпилировать ваше приложение и запустить его снова.

Шарик в центре экрана

Теперь шарик окажется еще точнее к центру. Можете поэкспериментировать со значениями смещений, чтобы отцентрировать шарик еще точнее.





Итак, Вы узнали, что такое векторная система координат.

Можете попробовать теперь в файле

simple_game\Media\textures\simple_game\tex_list.txt



Менять первые 2 значения для x и y на значения в диапазоне от -1.0f до 1.0f, сохранять изменения в файле и перезапускать приложение simple_game

ball\jump.tga; 0.5f; 0.5f; 0.8999f; 0.5f; 0.5f; 64; 128; 0; 0; 4; 8.0f; 14.0f;

Векторная координатная система

Центр экрана это точка с координатами x = 0.0f, y = 0.0f

Верхний край экрана это y = 1.0f, нижний - y = -1.0f.

Для x левый край экрана это x = -1.0f, а правый x = 1.0f

Поэкспериментируйте с изменением координат в файле

simple_game\Media\textures\simple_game\tex_list.txt



чтобы лучше уяснить себе этот важный момент.

В показаном ниже видео продемонстрированы 4 варианта отображения шарика в одной из 4 четвертей координатных осей.



для x, y = 0.5f, 0.5f - справа вверху, -0.5f, -0.5f - слева внизу,
0.5f, -0.5f - справа внизу, -0.5f, 0.5f - слева вверху.

[назад] [далее]



подробнее

Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny)

Приключения Кости Коробкина - С новым годом - интерактивный комикс
Костя Коробкин -
С новым годом
(kk hny)
Костя :- Эта история произошла со мной под новый год. Что-то может показаться вам выдумкой или даже фантастикой, но я Вас уверяю - это было на самом деле !

Новогодние приключения Кости Коробкина. Авторские музыкальные темы. Костя Коробкин встречает новый год. Что может приключиться под новый год, когда самые заветные желания исполняются ?

Комикс работает под управлением специального приложения, странички можно листать, увеличивать/уменьшать, делать паузу в автопролистывании.

Системные требования:

Windows 98SE/2000/Me/XP/DirectX9c /P3 1000 МHz / 128 Mb RAM / 32 Mb Video / около 100 Mb свободного места на жестком диске/DirectX-совместимая звуковая карта/ клавиатура, мышь

Приобрести интерактивный комикс Приключения Кости Коробкина - С новым годом (kk hny)


Стоимость: 150 руб.
Стоимость: 250 руб.





Приключения Кости Коробкина - С новым годом - интерактивный комикс

Приключения Кости Коробкина - небольшая занимательная история - комикс - о Косте Коробкине и о том, как он встречал новый год. Поздравления с новым годом и исполнение желаний, а также новая история о Косте Коробкине.

Приключения Кости Коробкина - С новым годом - интерактивный комикс
Комикс работает под управлением специального приложения, странички можно листать, увеличивать/уменьшать, делать паузу в автопролистывании.

Системные требования:

Windows 98SE/2000/Me/XP/DirectX9c /P3 1000 МHz / 128 Mb RAM / 32 Mb Video / около 100 Mb свободного места на жестком диске/DirectX-совместимая звуковая карта/ клавиатура, мышь

Приобрести интерактивный комикс Приключения Кости Коробкина - С новым годом (kk hny)

Стоимость: 250 руб.





 

Введение в программирование игр на С++ для платформы DirectX 9

Добавляем другую модель

 
     
     
     
 

Данный небольшой урок является введением в программирование игр на C++ для DirectX 9

Вам нужно иметь установленную среду Microsoft Visual Studio 2005 или 2008 (можно триал),

и DirectX SDK 9 версии, или лучше самой последней - DirectX SDK August 2008.

 
     
  [назад] [далее] [к содержанию]  
     
  Для того, чтобы использовать в примере SkinnedMesh из папки SkinnedMeshUpgrade какую-либо другую анимированную модель внесем небольшие изменения в код  
     
 

В модуле SkinnedMesh.cpp найдите строку кода

#define MESHFILENAME L"tiny\\tiny.x"

закомментируйте ее

//#define MESHFILENAME L"tiny\\tiny.x"

а ниже напишите новую строку

#define MESHFILENAME L"Media\\Models\\chentiz7.x"

 
     
 

При этом модель должна лежать в папке SkinnedMeshUpgrade\Media\Models

Для текстур создайте папку SkinnedMeshUpgrade\Media\Textures

 
     
 

Для экспорта анимированных моделей из 3ds max 7 подойдет экспортер PandaDXExport

Для других версий Max'а (8 и выше) используйте экспортер http://kwxport.sourceforge.net/

Об особенностях экспорта с помощью PandaDXExport читайте в статье Основы 3D-анимации, экспорт скелетной анимации

Об особенностях экспорта с помощью kWXPort читайте в статье Особенности экспорта экспортером kWXPort из 3ds max 2009

 
     
 

В x-файле экспортированной модели пути к текстурам нужно подправить соответствующим образом.

Открыть текстовый x-файл например блокнотом, найти все строки содержащие TextureFilename

и исправить путь к текстурам

в нашем примере если модель будет лежать в SkinnedMeshUpgrade\Media\Models

а текстура в SkinnedMeshUpgrade\Media\Textures

путь к текстуре внутри x-файла нужно записать как

TextureFilename {
"Media/Textures/chentiz7.jpg";
}

 
     
  сохраняем, возвращаемся в MSVS, сохраняем изменения кода, выполняем сборку, запускаем SkinnedMesh.exe и смотрим результат  
     
   
     
  модель и текстура для данного примера  
     
  в следующем уроке мы начнем разбор кода примера SkinnedMesh  
     
  [назад] [далее] [к содержанию]  
megainformatic live chat
Начать беседу
X
 

Оставленные комментарии



fle game engine - движок для создания игр
fle game engine - движок для создания игр


Something: Unexplained 2 captive of desires / Нечто: Необъяснимое 2 в плену желаний
Костя Коробкин Комикс Коллекционное издание - 6 комиксов, 81 страница, 220 mp3 треков
megainformatic Размещение баннерной рекламы у нас
Время загрузки: 1,7037