Перемещение камеры

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Перемещение камеры

Сообщение Don Leno » 06.10.2019 (Вс) 18:34

Здравствуйте!
Итак, в проекте есть форма на весь экран и таких же размеров Буфер (BackBuffer). В массив Cur() заносятся нажатия мышки и используются Sub Main() в цикле Do...Loop. Также имеются две переменные OldX & OldY, в которые заносятся значения X & Y при нажатии ЛКМ, а в переменные MovX & MovY хранятся значения X & Y при перемещении курсора. CamX & CamY - переменные хранящие координаты, скажем так, абстрактной камеры. Так вот я написал в цикле формулу которая при нажатии ЛКМ и перемещении курсора должна сдвигать камеру в нужные X & Y, но очень как то неправильно работает. Для наглядности посередине экрана отрисовал спрайт, чтобы можно было узреть перемещение камеры. Может кто поможет с решением?

Формула находится в цикле Do...Loop:
Код: Выделить всё
       
        If Cur(1) = True Then
        CamX = CamX + MovX * 0.01 - OldX * 0.01
        CamY = CamY + MovY * 0.01 - OldY * 0.01
        End If


Ниже предоставляю исходник, за корявость кода сильно не пинайте))
Вложения
zero.rar
(10.64 Кб) Скачиваний: 142

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Перемещение камеры

Сообщение Mikle » 06.10.2019 (Вс) 19:29

Ты делаешь что-то ужасное, но это ладно.
Я так понял, нужно это:
Код: Выделить всё
        CamX = CamX + MovX - OldX
        CamY = CamY + MovY - OldY

То есть без всяких * 0.01.
После строки
Код: Выделить всё
BackBuffer.PaintToDevice frmMain.hdc, CamX - Screen.Width \ 2, CamY - Screen.Height \ 2

Добавь:
Код: Выделить всё
        OldX = MovX
        OldY = MovY

Don Leno
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 421
Зарегистрирован: 13.10.2013 (Вс) 14:05

Re: Перемещение камеры

Сообщение Don Leno » 06.10.2019 (Вс) 20:34

Mikle! Thanx за помощь!
Я умножал на 0.01 чтобы уменьшить скорость движения камеры, а получилось что код испортил)) Оказывается всего лишь надо было добавить пару строк
Код: Выделить всё
        OldX = MovX
        OldY = MovY


И все работает как надо!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, SemrushBot и гости: 46

    TopList