очень маленькие хинты
Предлагаю в этой теме выкладывать то, что под определение функции не попадает ввиду своих малых размеров, но тем не менее способно принести ощутимую пользу.
С вашего позволения, я начну. ФПС - это очень больной вопрос, и не секрет, что многие ищут способы его увеличения. предлагаю вашему вниманию следующий ФПС-бустер: вертикальная синхронизация - это эффект, позволяющий добиться совпадения обсчёта сцены и обновления экрана. если она выключена, могут наблюдаться некоторые артефакты. А могут и не наблюдаться. Если же она включена, то заветный ФПС не поднимется выше частоты обновления экрана, которая обычно составляет 60-70Гц. Вся радость жизни в том, что по умолчанию она в блитце включена, а вот как ее выключить знают не все. Меж тем делается это просто - надо вместо: Flip писать: Flip false или Flip (0) вот и всё - наслаждайтесь приростом фпс! был бы крайне признателен, если бы кто-нибудь написал про рендер твининг. |
Re: очень маленькие хинты
Рендер твининг, это технология позволяющая стабилизировать скорость анимации моделей.
Для этого нужно юзать необязательный параметр твин, а сам параметр этот это число float являющееся отношением текущей скорости к необходимой, другими словами текущий_фпс/требуемый_фпс. Например мы хотим чтоб анимация щла на скорости 75 фпс, а у нас сейчас видяха выдаёт тока 30, то твин коэффициент равен 30/75 = ~0.5 вот и всё... Этот коэфицент передавать в функции UpdateWorld и RenderWorld Однако RenderWorld часто начинает глючить почём зря с твинингом в частности мерцают объекты с альфа-каналом. |
Re: очень маленькие хинты
параметр UpdateWorld - ето множитель скорости моделей, например updateworld 2 - вся анимация будет играться в два раза быстрее.
тогда (теоретически, сам не проверял) для стабилизации скорости анимации проигрывания моделей можно сделать так: updateworld требуемый_фпс/текущий_фпс. mod 1 - вернет дробную часть числа (спасибо Impersonalis-у) a=b=4 - присваивает переменной a 1-цу, если b равен 4 и 0 если неравен (многие ето знают но немногие пользуются). еще пример, ето можно использовать и в математических выражениях, например for i=1 to 100 if a(i)=5 then b(i)=0 else b(i)=10 next можно заменит на: for i=1 to 100 b(i)=(a(i)=5)*10 next |
Ответ: очень маленькие хинты
Код:
entity=EntityCollided(hero,enemy_type) Or EntityCollided(hero,bild_type) Or PickEntity(hero,10) |
Ответ: очень маленькие хинты
Циклический счетчик. Переменная a будет изменяться в пределах от 0 до RANGE - 1.
Код:
a% = 0 Код:
const RANGE% = 31 ; 00011111b |
Ответ: очень маленькие хинты
меняет цвет при условии
Код:
Color (health<25)*255,(health>=25)*255,0:text 0,0,health если я изобрел велосипед, скажите. |
Ответ: очень маленькие хинты
|
Re: очень маленькие хинты
Незнаю такое кто мож уже знает. Но всеже выкладываю.
a=5 b=5 Условие ИЛИ ;If (a Or b)=5 Then ;ИЛИ Условие И If (a And b)=5 Then ;И Print "Yes" Else Print "no" EndIf WaitKey |
Ответ: очень маленькие хинты
Ещё и так можно:
;If a=5 Or b=10 Then ;ИЛИ Условие И If a=5 And b=10 Then ;И Print "Yes" Else Print "no" EndIf WaitKey |
Ответ: Re: очень маленькие хинты
Цитата:
|
Ответ: очень маленькие хинты
Код:
Global Click% Очень удобно, если MouseHit() не всегда срабатывает, а применение MouseDown() неприменимо. |
Ответ: очень маленькие хинты
Функция такого рода называется MouseRelease, т.к. обработка инпута происходит отдельным потоком, то употребление функций получения инпута, за один так главного цикла - не наилучший способ получения данных о нажатиях, т.к. хоть и мала вероятность отпустить мышь между двумя связанными MouseDown, но она есть, и ловил я её не раз. По этому очень рекомендую привязывать к Глобальным переменным, в Начале цикла Весь инпут (мышь, клаву, кнопки, координаты, и скорости, всех видов инпута, которые обрабатываются паралельным потоком).
|
Ответ: очень маленькие хинты
Думаю, что проверка на MouseHit() будет лишней. я ее вписал на всякий случай, но походу работает и без нее.
|
Ответ: очень маленькие хинты
Вот такая конструкция вернет значение после отрицания :
num#=-2.3 if keyhit (but) then num#=(not num#)*-2.3 значение модет быть любым абсалютно. |
Ответ: очень маленькие хинты
1. EntityCollided и другие функции коллизий в Блице не будут работать без UpdateWorld в главном цикле. Справка не врет.
2. справка по функции Blitz3D DocsEntityBox(ent, x,y,z, w,h,d) ничего не говорит о координатах x,y,z - а это на самом деле не центр, а крайний угол параллелепипеда... Иногда справка не врет, а не говорит всю правду;-) |
Часовой пояс GMT +4, время: 17:39. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot