Показать сообщение отдельно
Старый 04.10.2005, 00:07   #47
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
FPS меня не радует в двух отношениях:
1. Чатота изменения FPS (очень быстро дергается)
Предлогаю заменить на следующее:
 * * *;FPS CHECK;
 *MS#=MilliSecs()
 *If (MS-MSL)>=500 Then
 *	FPS=FPS_Count*2
 *	FPS_Count=0
 *	MSL=MS
 *Else
 *	FPS_Count=FPS_Count+1
 *EndIf
 * * *;FPS CHECK;
изменяться будет раз в пол секунды
2. Сам FPS маловат (у меня CeleronD 2400 а FPS всего примерно 138 кадров/с)
Предлагаю уменьшить кол-во объектов на карте путем загрузки всех неразрушаемых объектов как один (создавать повертексно в одном и том же меше(mesh), а точнее в его поверхности (surfse)), далее изменить к нему метод столкновения на ellipsoid-to-polygon.
Это повысит FPS
Вот к примеру функции из моей игры(http://pax-games.narod.ru/downloads/bombers3d.exe):
Const BoxUpperSide%=0 *
Const BoxFrontSide%=1
Const BoxBackSide%=2
Const BoxLeftSide%=3
Const BoxRighrtSide%=4

;C-размер куба, Surf%-поверхность к которой добавляется Куб
;X#,Y#,Z# - координаты центра куба
Function AddBoxToSurface(Surf%,BoxSide%,X#,Y#,Z#,C#=1)
	AddBoxSideToSurface(Surf%,BoxUpperSide%,X#,Y#,Z#,C#)
	AddBoxSideToSurface(Surf%,BoxFrontSide%,X#,Y#,Z#,C#)
	AddBoxSideToSurface(Surf%,BoxBackSide%,X#,Y#,Z#,C#)
	AddBoxSideToSurface(Surf%,BoxLeftSide%,X#,Y#,Z#,C#)
	AddBoxSideToSurface(Surf%,BoxRighrtSide%,X#,Y#,Z#,C#)
; Нижнюю сторону куба я не добавлял :)
End Function

;Можно добавить только сторону
Function AddBoxSideToSurface(Surf%,BoxSide%,X#,Y#,Z#,C#)
Local X1#, Y1#, Z1#, X2#, Y2#, Z2#, X3#, Y3#, Z3#, X4#, Y4#, Z4#
Local V1%, V2%, V3%, V4%
Local T1%, T2%
	C#=C#/2
	Select BoxSide%
 *Case BoxUpperSide%
 *	X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 *	Y1#=Y#+C: Y2#=Y#+C: Y3#=Y#+C: Y4#=Y#+C
 *	Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
 *Case BoxFrontSide%
 *	X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 *	Y1#=Y#-C: Y2#=Y#-C: Y3#=Y#+C: Y4#=Y#+C
 *	Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#-C: Z4#=Z#-C
 *Case BoxBackSide%
 *	X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 *	Y1#=Y#+C: Y2#=Y#+C: Y3#=Y#-C: Y4#=Y#-C
 *	Z1#=Z#+C: Z2#=Z#+C: Z3#=Z#+C: Z4#=Z#+C
 *Case BoxLeftSide%
 *	X1#=X#-C: X2#=X#-C: X3#=X#-C: X4#=X#-C
 *	Y1#=Y#-C: Y2#=Y#+C: Y3#=Y#+C: Y4#=Y#-C
 *	Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
 *Case BoxRighrtSide%
 *	X1#=X#+C: X2#=X#+C: X3#=X#+C: X4#=X#+C
 *	Y1#=Y#+C: Y2#=Y#-C: Y3#=Y#-C: Y4#=Y#+C
 *	Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
	End Select
	V1%=AddVertex(Surf%, X1#, Y1#, Z1#, 0, 0)
	V2%=AddVertex(Surf%, X2#, Y2#, Z2#, 1, 0)
	V3%=AddVertex(Surf%, X3#, Y3#, Z3#, 1, 1)
	V4%=AddVertex(Surf%, X4#, Y4#, Z4#, 0, 1)
	T1%=AddTriangle(Surf%, V1%,V3%,V2%)
	T2%=AddTriangle(Surf%, V1%,V4%,V3%)
End Function
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием