Гравитация.
| |
infuzo | Дата: Вторник, 21 Сентября 2010, 23:19 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Я хочу сделать определённый уровень гравитации. Создал Plane. Привязал к плану камеру. Но скорость движения камеры к плану как выставить? Вот ссылка на скачивание кода.
Сообщение отредактировал infuzo - Среда, 22 Сентября 2010, 08:38 |
|
| |
JohnJ | Дата: Среда, 22 Сентября 2010, 00:28 | Сообщение # 2 |
участник
Сейчас нет на сайте
| infuzo, почему бы не сделать игру по какому-либо уроку на эту тему? Там всё будет понятно...
|
|
| |
Viruz | Дата: Среда, 22 Сентября 2010, 03:07 | Сообщение # 3 |
KOLLEKTOR
Сейчас нет на сайте
| Quote (infuzo) Вот ссылка на скачивание кода. такие вещи вбиваются ................................................ т.к. кода я не видел, объясню тебе на пальцах. Вообще нишьяк будет если ты Plane придашь значение глобал, пробишешь в нем пивот, а все остальное уже в привязку типами
|
|
| |
infuzo | Дата: Среда, 22 Сентября 2010, 08:38 | Сообщение # 4 |
частый гость
Сейчас нет на сайте
| Я так и сделал. Я про другое спрашиваю. КАК ВЫСТАВИТЬ СКОРОСТЬ ПАДЕНИЯ?
|
|
| |
Serg1971 | Дата: Среда, 22 Сентября 2010, 09:38 | Сообщение # 5 |
Весёлый программист
Сейчас нет на сайте
| Quote (infuzo) Я так и сделал. Я про другое спрашиваю. КАК ВЫСТАВИТЬ СКОРОСТЬ ПАДЕНИЯ? Не знаю, как у вас в блице с конкретными операторами, но логически это делается так: до основного тела программы вводится переменная (например G), в основном цикле - берётся значение координаты по оси Y (высота камеры относительно плана, или любого игрового обьекта который должен падать ), и из неё постоянно вычитается G, результат записывается как новое положение камеры (обьекта) по Y. Переменную G - можно менять согласно любому физическому закону, или линейно... Можно впрочем, оставить её постоянной - тогда камера просто постоянно будет падать вниз, без ускорения или замедления. При отрицательном значении G - уже будет антигравитация!
Сообщение отредактировал Serg1971 - Среда, 22 Сентября 2010, 10:08 |
|
| |
infuzo | Дата: Среда, 22 Сентября 2010, 19:34 | Сообщение # 6 |
частый гость
Сейчас нет на сайте
| Да я знаю как это сделать логически. Я хочу спросить операторы, которые отвечают за скорость камеры. Добавлено (22.09.2010, 17:10) --------------------------------------------- Люди. Скажите команду. Добавлено (22.09.2010, 19:34) --------------------------------------------- А может кто-то знает урок, где описывается движение камеры, использование мыши? Если знаете - выкладите, пожалуйста.
|
|
| |
Serg1971 | Дата: Среда, 22 Сентября 2010, 23:40 | Сообщение # 7 |
Весёлый программист
Сейчас нет на сайте
| Блин, я даже не зная Блица - написал тебе пример гравитации! Code Graphics3D 800,600 SetBuffer BackBuffer() Global player plaer=CreateSphere() cam=CreateCamera(player) PositionEntity cam,0,10,0 gravity=0.1 while Not KeyDown(1) if KeyDown(200) MoveEntity player,0,0,0.1 if KeyDown(208) MoveEntity player,0,0,-0.1 if KeyDown(203) TurnEntity player,0,1,0 if KeyDown(205) TurnEntity player,0,-1,0 MoveEntity player,0,gravity,0 RenderWorld Flip Wend end Скорость падения(гравитация) - меняется увеличением(уменьшением) значения переменной gravity... Твой код не смотрел, сам план вставишь... Для поворота камеры мыхой - кури мануал хелпа(команды), там должны быть команды отслеживающие перемещение мыши (тебе нужно по Х) что-то типа MoveMouseX(), или что-то похожее - не знай как там в Блице, у меня он не стоит на компе... Я вообще - на другом Бейсике программирую. Значение перемещения по оси Х, поделишь на 10, к примеру (а то резко крутиться будет) и подставишь вместо 1 TurnEntity player,0,1,0 Причём перемещение может принимать как положительные значения, так и отрицательные... Если уж нет у вас там, команд отслеживающих перемещение мыхи по осям, то придётся отслеживание делать самому... oldX=MouseX() . несколько . каких-нибудь . команд newX=MouseX() dx=(newХ-oldХ)/10 А потом dx подставляешь всего в одну команду TurnEntity player,0,dx,0 oldX=newX и всё!
Сообщение отредактировал Serg1971 - Четверг, 23 Сентября 2010, 00:26 |
|
| |
infuzo | Дата: Суббота, 25 Сентября 2010, 15:34 | Сообщение # 8 |
частый гость
Сейчас нет на сайте
| В блитзе гравитация делается одной строчкой кода Code TranslateEntity player ,0, уровень гравитации(от минус бесконечности до плюс бесконечности),0
|
|
| |
spy4433 | Дата: Понедельник, 29 Ноября 2010, 20:37 | Сообщение # 9 |
был не раз
Сейчас нет на сайте
| ну одной строчкой кода это не правильная гравитация так будет более реалестично vy - вектор 0.3- тестовым путем mass# масса объекта Vy=Vy+0.3*mass# translateentity entity,0,-vy,0
|
|
| |
|