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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 28.05.2007, 02:44   #31
WaReZ_MEN
Модератор
 
Регистрация: 20.06.2006
Сообщений: 363
Написано 24 полезных сообщений
(для 44 пользователей)
Re: Как узнать размер меша?

....
 Pick%= CameraPick(Cam,MouseX(),MouseY())
....

For  Unit.TUnit = Each TUnit
        If Unit<>Null
        ;	EntityPickMode 	Unit\Model,2
        	AnimEntityPickMode(Unit\Model,2)
        	If Pick%= Unit\Model
			   Unit\Selected=True
			 Else
				Unit\Selected=False
			EndIf   
		EndIf	   
    Next    

....

Function AnimEntityPickMode(Mesh, Mode)
   EntityPickMode(Mesh, Mode)
   For i = 1 To (CountChildren(Mesh))
      Child = GetChild(Mesh, i)
      AnimEntityPickMode(Child, Mode)
   Next
End Function
(Offline)
 
Ответить с цитированием
Старый 28.05.2007, 02:50   #32
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Как узнать размер меша?

1. необязательно каждый цинкл проводить изминение пикабелити этих объектов. достаточно ето сделать один раз, во время их создания.
ПС. а можно весь код в студию?
(Offline)
 
Ответить с цитированием
Старый 28.05.2007, 02:51   #33
WaReZ_MEN
Модератор
 
Регистрация: 20.06.2006
Сообщений: 363
Написано 24 полезных сообщений
(для 44 пользователей)
Там очень много что канкретно нужно?

С простыми (не анемироваными) мешами все ок, а с анемироваными не получается
(Offline)
 
Ответить с цитированием
Старый 28.05.2007, 02:56   #34
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Как узнать размер меша?

1. как показывается выделение юнитов
2. ВЕСЬ код от Pick%= CameraPick(Cam,MouseX(),MouseY()) до If Pick%= Unit\Model.
3. вынеси плиз AnimEntityPickMode(Unit\Model,2), туда, где создаются юниты.
(Offline)
 
Ответить с цитированием
Старый 28.05.2007, 03:03   #35
WaReZ_MEN
Модератор
 
Регистрация: 20.06.2006
Сообщений: 363
Написано 24 полезных сообщений
(для 44 пользователей)
Re: Как узнать размер меша?

    Pick%= CameraPick(Cam,MouseX(),MouseY())
If MouseHit(1) 
		    If CursorStatus=0 Then SelectBuilding(): SelectUnit():                                   MouseHitMap(PickedX(),PickedZ())  
		    If CursorStatus=1 Then PostBuilding()	      
		EndIf
	
	If KeyHit(1) 
	   If CursorStatus=0 Then Exit
	      ClearMouseStatus() 
	      CursorStatus=0
	EndIf
   	
   	If KeyHit(6) Then CreateUnit( 1,PickedX(),PickedY()+1,PickedZ())  

	DrawSelectUnit()
	DrawImage MousePointer,MouseX(),MouseY()

	Flip
Forever



Function SelectUnit()    	
    For  Unit.TUnit = Each TUnit
        If Unit<>Null
        ;	EntityPickMode 	Unit\Model,2
;        	AnimEntityPickMode(Unit\Model,2) ;перенес в создание юнита
        	If Pick%= Unit\Model
			   Unit\Selected=True
			 Else
				Unit\Selected=False
			EndIf   
		EndIf	   
    Next    
End Function

Function DrawSelectUnit()
max#=10000000.0
 For  Unit.TUnit = Each TUnit
        If Unit<>Null
        	If Unit\Selected=True
				CameraProject(Cam,EntityX(Unit\Model),EntityY(Unit\Model)+Unit\ModelHeight#+0.5,EntityZ(Unit\Model))         	
                If EntityInView(Unit\Model,Cam)=True         	
	        		tY=TerrainY(terrain,EntityX(Unit\Model),EntityY(Unit\Model),EntityZ(Unit\Model))
					PositionEntity SelectUnitSprite,EntityX(Unit\Model),tY+.1,EntityZ(Unit\Model)
					max#=Unit\ModelWidth#
					If Max#>Unit\ModelDepth#  Then max#=Unit\ModelDepth# 
					ScaleSprite SelectUnitSprite,max#,max# 
					ShowEntity SelectUnitSprite	
					NewInterface.TInterface=First TInterface
		        StartDraw
					SetBlend FI_ALPHABLEND	
					DrawImageEx Unit\Avatar ,NewInterface\AvatarX,NewInterface\AvatarY
					DrawImageEx Unit\Icon ,NewInterface\IconX,NewInterface\IconY
				EndDraw	
					UnitHealth(Unit\MaxHealth,Unit\NowHealth,ProjectedX#(),ProjectedY#(),True)
					Return 0
					EndIf
    		EndIf	
    	EndIf	
    Next		    
    HideEntity SelectUnitSprite 
    Return 0
End Function

Function UnitHealth(MaxHealth,NowHealth,Unit_X,Unit_Y,Viseble)

  If Viseble=True
  	
  mxh=((MaxHealth/10)/4)
  
  If NowHealth/10=MaxHealth/10 Or NowHealth/10>= ((mxh*3)) Then Color 0,255,0
  
  If  NowHealth/10>= ((mxh*2)) And NowHealth/10<((mxh*3)) Then Color 255,255,0
  If  NowHealth/10<= ((mxh*2)) Then Color 0,255,0
  
	;Color 255,0,0
	Rect Unit_X-(MaxHealth/10)/2,Unit_Y,MaxHealth/10,6,0
	Rect Unit_X-(MaxHealth/10)/2,Unit_Y,NowHealth/10,6,1
	Color 255,255,255
    Return 0 
  EndIf  
  
  Return 0
End Function
(Offline)
 
Ответить с цитированием
Старый 28.05.2007, 04:34   #36
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Как узнать размер меша?

http://www.boolean.name/showthread.php?t=3610
(Offline)
 
Ответить с цитированием
Старый 28.05.2007, 11:53   #37
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Как узнать размер меша?

черт, как я сразу недопер.
ведь функция возвращает хендл пикнутого ентити и етот хендл несовпадает с хендлом родителя. надо проверять нет ли ентити с таким хендлом среди детей.
function IsMyChild(ent,child)
for i=1 to countchildren(ent)
ismychild(ent,child)
next
if ent=child then itistrue=1 ; itistrue - глобальная переменная
end function
короче обнуляеш переменную, вызываеш ф-ию и потом смотриш значение перменной.
(Offline)
 
Ответить с цитированием
Старый 29.05.2007, 01:42   #38
WaReZ_MEN
Модератор
 
Регистрация: 20.06.2006
Сообщений: 363
Написано 24 полезных сообщений
(для 44 пользователей)
Re: Как узнать размер меша?

HolyDel спасибо но МоКа тебя опередил и с этим
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать размер файла HAMANN 2D-программирование 3 16.12.2008 18:12
Размер мидлета archerix Основной форум 10 12.02.2008 16:37
Размер массива kyb66 Основной форум 7 15.12.2007 21:32


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


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