Пятница, 19 Апреля 2024, 23:58

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Basic » Гравитация. (Как сделать в Blitz3D)
Гравитация.
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)
Вот ссылка на скачивание кода.

такие вещи вбиваются
Quote
сюда

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



infuzoДата: Среда, 22 Сентября 2010, 08:38 | Сообщение # 4
частый гость
Сейчас нет на сайте
Я так и сделал. Я про другое спрашиваю. КАК ВЫСТАВИТЬ СКОРОСТЬ ПАДЕНИЯ?
Serg1971Дата: Среда, 22 Сентября 2010, 09:38 | Сообщение # 5
Весёлый программист
Сейчас нет на сайте
Quote (infuzo)
Я так и сделал. Я про другое спрашиваю. КАК ВЫСТАВИТЬ СКОРОСТЬ ПАДЕНИЯ?

Не знаю, как у вас в блице с конкретными операторами, но логически это делается так: до основного тела программы вводится переменная (например G), в основном цикле - берётся значение координаты по оси Y (высота камеры относительно плана, или любого игрового обьекта который должен падать ), и из неё постоянно вычитается G, результат записывается как новое положение камеры (обьекта) по Y. Переменную G - можно менять согласно любому физическому закону, или линейно... Можно впрочем, оставить её постоянной - тогда камера просто постоянно будет падать вниз, без ускорения или замедления. При отрицательном значении G - уже будет антигравитация! smile




Сообщение отредактировал 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
Весёлый программист
Сейчас нет на сайте
Блин, я даже не зная Блица - написал тебе пример гравитации! smile
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
был не раз
Сейчас нет на сайте
ну одной строчкой кода это не правильная гравитация smile

так будет более реалестично

vy - вектор smile
0.3- тестовым путем smile
mass# масса объекта smile

Vy=Vy+0.3*mass#
translateentity entity,0,-vy,0

Форум игроделов » Программирование » Basic » Гравитация. (Как сделать в Blitz3D)
  • Страница 1 из 1
  • 1
Поиск:

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