forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   2D-программирование (http://forum.boolean.name/forumdisplay.php?f=13)
-   -   плавный скроллинг в тайл движке? (http://forum.boolean.name/showthread.php?t=3433)

dimanche13 23.05.2007 14:28

плавный скроллинг в тайл движке?
 
Сделал скроллинг по-тайловый, вот так:

Method Draw()
For Local x:Byte = 0 Until VisibleX
For Local y:Byte = 0 Until VisibleY
If Map[x + CameraX + ((y + CameraY) * Width)] = False
Tile0.Draw( (x * TTile.Width) , (y * TTile.Height) )
Else
Tile1.Draw( (x * TTile.Width) , (y * TTile.Height) )
End If
Next
Next
End Method

Блин, не могу сделать плавный (попиксельный) скроллинг карты. Может кто знает как это делается???

johnk 23.05.2007 14:30

Re: плавный скроллинг в тайл движке?
 
При прибавлении значения домножай на что нибудь ;) Например на *0.1

dimanche13 23.05.2007 14:55

Re: плавный скроллинг в тайл движке?
 
не понял что домножатья? у меня ф-ция апдэйт :
Method Update()

If KeyDown(KEY_UP) CameraY :- 1 If KeyDown(KEY_DOWN) CameraY :+ 1
If KeyDown(KEY_RIGHT) CameraX :+ 1
If KeyDown(KEY_LEFT) CameraX :- 1
end method

что домножать то?

johnk 23.05.2007 14:58

Re: плавный скроллинг в тайл движке?
 
Ну или не +1 а +0.01

dimanche13 23.05.2007 15:00

Re: плавный скроллинг в тайл движке?
 
Нет, не работает, а другие варианты есть?

ZanoZa 23.05.2007 20:52

Re: плавный скроллинг в тайл движке?
 
тоже самое сделать только объявить cameraX и cameraY как флоат

moka 24.05.2007 00:01

Re: плавный скроллинг в тайл движке?
 
Сделать 2 значения скорости, и одно значение максимальной скорости, затем к значениям CameraX и CameraY, прибавлять их каждый цикл, а их изменять так:
Пра нажатии вправо:
CamXSp#=CamXSp+((CamMaxSp#-CamXSp)*.05)
Влево:
CamXSp#=CamXSp+((-CamMaxSp#-CamXSp)*.05)

И после всех изменений снижение скорости:
CamXSp:*.97

Ну и т.п, .05 это значение плавности, с ним можешь поиграться, ну в этом роде делай дальше, примерно так. Я такие плавности применяю, т.к. в них есть эффект резкого разгона.

dimanche13 25.05.2007 13:59

Re: плавный скроллинг в тайл движке?
 
MoKa а можно поподробнее, примерчик какой-нить...

moka 28.05.2007 01:16

Re: плавный скроллинг в тайл движке?
 
Как понял вид сверху?
Вот, давненько делал.
1,2,3 эффекты. WASD перемещение.

dimanche13 28.05.2007 14:11

Re: плавный скроллинг в тайл движке?
 
Мока ну ты даешь! Я начинающий, а ты мне такой крутяк предлагаешь ))) я просто в шоке ! Я такое никогда не напишу. Попроще бы чего-нибудь.

moka 29.05.2007 02:20

Re: плавный скроллинг в тайл движке?
 
Там всё просто, значит истинна в этих строках:

Код:

CamSp#=5 ;Skorostj
CamXSp=(CamXSp+(((IKdD-IKdA)-CamXSp)*.05))
CamZSp=(CamZSp+(((IKdS-IKdW)-CamZSp)*.05))
Gx:+(CamXSp*CamSp)
Gz:+(CamZSp*CamSp)

Gx и Gz - это глобальные координаты камеры.
CamXSp и CamZSp, объяви в глобали.

ЗЫ По секрету, это 3 мой код на БМаксе ;)

dimanche13 29.05.2007 15:29

Re: плавный скроллинг в тайл движке?
 
IKdD-IKdA - а что это такое? я так понял что это кнопки для движения камеры. Но почему они друг из друга вычитаются? глобальные координаты камеры это верхний левый или центр камеры?

jimon 29.05.2007 18:49

Re: плавный скроллинг в тайл движке?
 
ну смотри (я про кнопки)
есть выражение ( A-B )
если зажата A то выражение = 1
если B то = -1
если A и B то = 0
тоесть если нажать A то поедем прямо (или куда нам надо)
если B то поедем в противоположную сторону
если A и B то никуда не поедем :)

moka 29.05.2007 20:29

Re: плавный скроллинг в тайл движке?
 
Цитата:

ну смотри (я про кнопки)
есть выражение ( A-B )
если зажата A то выражение = 1
если B то = -1
если A и B то = 0
тоесть если нажать A то поедем прямо (или куда нам надо)
если B то поедем в противоположную сторону
если A и B то никуда не поедем :)
Именно так.
IKd? - это переменная, к которой привязана кнопка, тоесть:
IKdD=KeyDown(Непомню ИД буквы D) ;)

Цитата:

глобальные координаты камеры это верхний левый или центр камеры?
Левого верхнего.

dimanche13 30.05.2007 15:29

Re: плавный скроллинг в тайл движке?
 
Блин с кнопками, это прикольно, я понял. ) У меня получилось, правда есть такая ерунда, что камера продолжает движение после отпускания кнопки до тех пор пока не нажмешь другую кнопку.


Часовой пояс GMT +4, время: 22:47.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot