Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > BlitzMax > 2D-программирование

Ответ
 
Опции темы
Старый 04.11.2011, 07:10   #1
VoIodia
AnyKey`щик
 
Аватар для VoIodia
 
Регистрация: 28.01.2009
Сообщений: 4
Написано 0 полезных сообщений
(для 0 пользователей)
Сообщение Вариативная сила прыжка.

Посоны, суть такова - надо сделать прыжок персонажа так, чтобы чем дольше держишь клавишу прыжка, тем выше подпрыгиваешь. ну, до определённого предела, конечно. если задержка, предположим, дольше определённого времени, то персонаж подпрыгивает сам на максимальную высоту.
так вот, я написал первое, что пришло в голову - то есть беру разность системного времени, там считаю по миллисекундам и каждые десять к начальной силе прыжка прибавляю дополнительную. как только достигает максимальной, то срабатывает прыжок и счётчики сбрасываются на ноль.
НО ЭТО ЛИШНЕЕ НАГРОМОЖДЕНИЕ ЖЕ СТОЛЬКО ИФОВ И ФУНКЦИЙ КАЖДЫЙ КАДР ПРОВЕРЯТЬ ЛАГИ ТОРМОЗА СНИЖЕНИЕ ПРОИЗВОДИТЕЛЬНОСТИ С 520-ТИ ДО 517-ТИ ФПС ЁМА.
Джентельмены, не подскажете способ попроизводительнее?
(Offline)
 
Ответить с цитированием
Старый 04.11.2011, 14:38   #2
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Вариативная сила прыжка.

3 fps down??

Все просто,

Type Player
	Field bSpaceDown:Byte
	Field iTimeSpaceHit:Int
	
	Method Update
		'...
		If(KeyDown(KEY_SPACE))
			If(Not bSpaceDown)'тока нажал
				iTimeSpaceHit = MilliSecs()
                                             bSpaceDown = 1
			EndIf 
		Else
			If(bSpaceDown)
				Local iTime = MilliSecs() - iTimeSpaceHit
				'time - время в миллисекундах, сколько юзер держал спейс
			EndIf 
			bSpaceDown = 0
		EndIf 
		'...
	End Method 
End Type
__________________
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Reizel за это полезное сообщение:
LLI.T.A.L.K.E.R. (04.11.2011), VoIodia (04.11.2011)
Старый 04.11.2011, 17:35   #3
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: Вариативная сила прыжка.

А зачем особо заморачиваться?
Есть одна глобальная переменная жампофорса.
Если нажат пробел то жампафорса увеличивается постепенно пока не достигнет максимума.( То что чар сам прыгнет когда она станет максимальной это насилие над личностью игрока.)

если пробел не нажат и жампафорса не ноль и чар касается того от чего может прыгнуть, то на основе жампафорса вычисляется необходимая скорость пендаля персонажу, жампофорса обнуляется. Персонаж подлетает. Два ифа.

Зы: и вообще экономить на механике главного персонажа и удобстве управления это недальновидно.
(Offline)
 
Ответить с цитированием
Старый 04.11.2011, 18:20   #4
VoIodia
AnyKey`щик
 
Аватар для VoIodia
 
Регистрация: 28.01.2009
Сообщений: 4
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Вариативная сила прыжка.

Павел, спасибо. И правда всё слишком просто, как сам сразу не додумался
dsd
>То что чар сам прыгнет когда она станет максимальной это насилие над личностью игрока.
>и вообще экономить на механике главного персонажа и удобстве управления это недальновидно.
поиграй в Soldat, например. мне кажется это довольно удобным.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com