Тема: Camera pick!
Показать сообщение отдельно
Старый 01.09.2009, 16:34   #17
maxim7788
AnyKey`щик
 
Аватар для maxim7788
 
Регистрация: 29.08.2009
Сообщений: 2
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Camera pick!

Большое спасибо за подсказку. Хотелось бы продолжить эту тему на конкретном примере с типами. Имеется Type Box с переменными. Создаем 100 кубиков и заполняем их переменные значениями. С помощью Picked мы можем выделить любой из кубиков и получить значения EntityName и EntityX, а затем присвоить эти значения каким то переменным (в нашем случае значения присваиваются переменным item_info$ и item_xxx#). Отсюда возникает вопрос: а можно ли прочесть переменные Type "пикнутого" кубика (чтобы не использовать перебор всех кубиков) и затем присвоить их каким-либо переменным ... ну например - "пикнуть" какой-нибудь кубик, прочитать его переменную room\index и присвоить её значение переменной room_id#. Заранее спасибо.

Graphics3D 1024,768,32,1
SetBuffer BackBuffer()

Global cam=CreateCamera()
PositionEntity cam,100,400,120
TurnEntity cam,90,0,0
light=CreateLight()
RotateEntity light,30,0,0
SetFont LoadFont("courier",18)

;===================================================

Type box
	Field entity
	Field index
	Field x
	Field z
End Type 

For a=1 To 10
	For b=1 To 10
		i=i+1
		room.box=New box
		room\index=i
		room\x=30*a		
		room\z=30*b
		room\entity=CreateCube()
		NameEntity room\entity,"item_"+i
		EntityPickMode room\entity,2
		ScaleEntity room\entity,10,2,10
		PositionEntity room\entity, room\x, 0, room\z
	Next
Next

;====================================================

While Not KeyHit(1)
	
	x_mouse=MouseX()
	y_mouse=MouseY()
	
	Picked=CameraPick(cam,MouseX(),MouseY())
	
	; ------------------
	If Picked<>0 Then 
		item_info$=EntityName(Picked)
		item_xxx#=EntityX(Picked)
	Else 
		item_info$="none"
		item_xxx#=0
	EndIf
	
	; ------------------  
	If Picked<>target Then
		If target Then EntityAlpha target,1
		target=Picked
	EndIf
	If target
		EntityAlpha target,Sin( MilliSecs() )*.5+.5
	EndIf
				
UpdateWorld
RenderWorld

	Color 255,0,0
	Text 20, 40, "EntityName..."+item_info$
	Text 20, 60, "EntityX......"+item_xxx#		
	Text 20,100, "room_id....."+room_id#
				
	Rect x_mouse,y_mouse-3,1,7	
	Rect x_mouse-3,y_mouse,7,1
	
Flip
Cls
Wend
End
(Offline)
 
Ответить с цитированием