Форум программистов, компьютерный форум, киберфорум
OpenGL
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
48 / 6 / 1
Регистрация: 06.04.2010
Сообщений: 39
1

2D OpenGL: самодельная физика [РЕШЕНО]

29.12.2010, 23:10. Показов 2268. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго вам времени суток
Исходник кода взял из NeHe'совского урока, дополнил своим кодом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
bool ON_FLOAR(GLfloat X,GLfloat Y)
{
///переменная высоты
GLfloat X,Y;
int YH[]={10,9,8,7,6,5,4,3,2,1,1,1,1,1,1};
 
///проверка стоит он на земле, гравитация
bool ON_FLOOR(GLfloat X,GLfloat Y)
{
if((int)floor(X)<<(int)X&&(int)X<<(int)ceil(X))
    {
        if((int)Y>=(YH[(int)floor(X)])&&(int)Y<=(YH[(int)ceil(X)]))
        {
            return true;
        }
    }
    else
    {
        return false;
    }
 
return true;
}
 
GLvoid Gravity(GLfloat Y)
{
    if(!((int)Y>=(YH[(int)floor(X)])&&(int)Y<=(YH[(int)ceil(X)])))
    {
        Y-=0.1f;
    }
}
потом в DrawGLScene я засунул

C++
1
    Gravity(Y);
В WinAPI

C++
1
2
3
4
5
6
7
8
                if (keys[VK_LEFT])
                {
                    X-=0.5f;
                }
                if (keys[VK_RIGHT])
                {
                    X+=0.5f;
                }



я даже пытылся сделать так
C++
1
2
3
4
                if (keys[VK_NEXT])
                {
                    Gravity(Y);
                }
Гравитация не пашет все равно
как и проверка на прыжок (ON_FLOOR)

Добавлено через 19 минут
так насчет гравитации я разобрался а насчет проверки стоит ли он на полу он всегда показывает true

Добавлено через 1 час 16 минут
все проблема решена
решение, кому интересно:
1.гравитацию перевел в bool
2.изменил код гравитации:
C++
1
2
3
4
5
6
7
8
9
10
11
bool Gravity(GLfloat Y)
{
    if(!((int)Y>=(YH[(int)floor(X)])&&(int)Y<=(YH[(int)ceil(X)])))
    {
        return true;
    }
    else
    {
    return false;
    }
}
3.в код добавил
C++
1
2
3
4
    if(Gravity(Y))
    {
        Y-=0.1f;
    }
а прыжок равен
C++
1
2
3
4
    if(!Gravity(Y)&&keys[VK_SPACE])
    {
        ...
    }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.12.2010, 23:10
Ответы с готовыми решениями:

Opengl физика многоугольника
Всем привет! Пишу на C++ под qt программу для реализации физики восьмиугольника. Есть...

OpenGL физика, интегратор верле
Добрый день! Ребята подскажите помимо хабра (где не описано столкновение) где хорошо расписан...

Самодельная ANC
Здравствуйте всем. В некоторых, довольно дорогих автомобилях (Oudi, BMW, Honda), имеется так...

Самодельная каптча
Скажите, в чем ошибка? Каптча почему-то не отображается. Картинка создается, но пустая. &lt;?php ...

0
29.12.2010, 23:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.12.2010, 23:10
Помогаю со студенческими работами здесь

Самодельная вытяжка
Всем привет, подскажите, может кто делал. Хочу вытяжку для пайки и чтоб как в сказке: максимальная...

Самодельная кнопка
как в самодельной кнопке менять текст программно? как обратится к текстовому полю что в кнопке?

Самодельная Wi-Fi антенна
Собрал такую антенну на скорую руку . Размеры не точно подогнал но ловит хорошо . Вопрос если...

Самодельная дрель
на ютюбе посмотрел сверление. не подскажите 1) какий моторчик брать, с кккими характеристиками....


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru