Страница: 1 | 2 | 3 | 4 | 5 |
Вопрос: VB6 и природа
Добавлено: 30.09.05 01:09
Автор вопроса: «UL.eXe» | ICQ: 197.895.916.247
Доброго всем!
Люди, подскажите - каким макаром возможно применить к (любому) обьекту (к примеру: кнопке) эмитацию гравитации ... Учитывая силу тяжения (кто не знает - 9.8)
?? Например: перетаскиваю обьект в вверх формы, а он падает обратно в низ..?
Помогите пожалуйста, заранее благодарен..!!
Ответы
Всего ответов: 63
Номер ответа: 1
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #1
Добавлено: 30.09.05 02:16
Попробуй так:
Const g = 0.01'px/(ms*ms)
Dim y As Double
Private Sub Mover_Timer()
Static vy As Double
y = y + vy * Mover.Interval
If y + obj.Height >= Form1.ScaleHeight then
vy = -vy * 0.75
y = Form1.ScaleHeight - obj.Height
End If
vy = vy + ay * Mover.Interval
Obj.Top = y
End Sub
Это только логика падения, и только по вертикали. Логику перетаскивания - если попросите, напишу.
Кодил так, не проверял, так что может не заработать. Но идея должна быть ясна.
Номер ответа: 2
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #2
Добавлено: 30.09.05 02:19
Ну вот смотри - если кнопка падает вниз, то каждую секунду ты прибавляешь к .Top какое-то число. Если это константа, то движение будет равномерным. так какие проблемы? увеличивай дельту-игрик на каждую единицу времени... типа того:
Dim x As Long, y As Long
Dim dy As Double ' speed
Private Sub Form_Load()
Me.ScaleMode = 3 'pixel
Show
x = Command1.Left
y = Command1.Top
dy = 0
Timer1.Interval = 10
End Sub
Private Sub Timer1_Timer()
dy = dy + g
Command1.Top = Command1.Top + dy
If Command1.Top > Me.Height / Screen.TwipsPerPixelY Then 'otskok
dy = -dy * 0.8
End If
End Sub
даже отскакивает
Номер ответа: 3
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #3
Добавлено: 30.09.05 02:23
опа опередили...
ЗЫ: нафиг х вводил? да хз, просто на автомате
Номер ответа: 4
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #4
Добавлено: 30.09.05 03:04
Ты бы еще z ввел. Чтобы она в лоб юзеру отскакивала.
Номер ответа: 5
Автор ответа:
AASoft
Вопросов: 86
Ответов: 920
Профиль | | #5
Добавлено: 30.09.05 08:04
gyyyyyyy...ndaa, nado 3D monitorov zhdat`, vot togda mozho budet takoe delat`....sidit sebe user, i tut na tebe, knopki horovod ustraivayut vokrug tebya )
Номер ответа: 6
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #6
Добавлено: 30.09.05 08:15
Ты ещё про видеоочки скажи
Номер ответа: 7
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #7
Добавлено: 30.09.05 11:03
Всем огромное спасибо!!
А идея то.... Мог и додуматься, видимо думать было влом Спасибо.
Номер ответа: 8
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #8
Добавлено: 30.09.05 11:11
2Morpheus
гм... проверил код...
а что отвечает за место на форме
Dim x As Long, y As Long
Dim dy As Double ' speed
Private Sub Form_Load()
Me.ScaleMode = 3 'pixel
Show
x = Command1.Left
y = Command1.Top
dy = 0
Timer1.Interval = 10
End Sub
Private Sub Timer1_Timer()
dy = dy + g
Command1.Top = Command1.Top + dy
If Command1.Top > Me.Height / Screen.TwipsPerPixelY Then 'otskok
dy = -dy * 0.8
End If
End Sub
куда должна падать кнопка??
ps падает за пределы формы..
Номер ответа: 9
Автор ответа:
AndreyMp
ICQ: 237822510
Вопросов: 28
Ответов: 1182
Профиль | | #9
Добавлено: 30.09.05 12:15
А что то мне помнится что g=9,8 - это УСКОРЕНИЕ свободного падения. Или я не прав? И тело не должно ускоряться при падеии, а падать с постоянной скоростью.
Номер ответа: 10
Автор ответа:
Pashenko
ICQ: 176176951
Вопросов: 14
Ответов: 655
Профиль | | #10
Добавлено: 30.09.05 12:21
Оригинально...
Сам понял, что написал?
Номер ответа: 11
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #11
Добавлено: 30.09.05 15:05
2 Андрей:
Причем тут ускорение?
Мне нужно, чтобы кнопка просто падала с земной силой тяжения в низ формы...
Номер ответа: 12
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #12
Добавлено: 30.09.05 15:12
Понял, Андрей? Никаких ускорений! Надо чтобы кнопка падала! Да еще вместе с земной силой Тяжения. Эт тебе не шубу в трусы заправлять!
Ой, не могу... Уже по полу катаюсь ))))))))))))))))))))
Номер ответа: 13
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #13
Добавлено: 30.09.05 15:16
2Pashenko А что он написал? Он спросил - должно ускоряться тело при падении или нет. Вполне логичный вопрос.
Номер ответа: 14
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #14
Добавлено: 30.09.05 15:22
Лажево что нельзя редактировать посты. А то только счетчик накручиваю...
If Command1.Top > Me.Height / Screen.TwipsPerPixelY Then 'otskok
2Morpheus А нафиг такой изврат то? Что, ScaleHeight разве чем-то не подходит?
Номер ответа: 15
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #15
Добавлено: 30.09.05 16:33
Слухайте ребят, писал просто так, для демонстрации. это не тот случай где можно к коду придираться...
Если бы я мог так приколоться над Unknown Lamer'ом, то можешь быть уверен- сделал бы )
куда должна падать кнопка??
По идее если кнопка падает, то вниз. а раз вниз то сверху
повесь её мышкой наверх формы.
ЗЫ: у меня самого она отскакивает раза 2 , потом уходит. ну и 0.8 - это типа упругость