forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Пикнуть объект (http://forum.boolean.name/showthread.php?t=13630)

Program23 02.11.2010 20:10

Пикнуть объект
 
Вот есть у меня 3 куба закинутых в тип.
Как сделать,чтобы я пикнул по кубу 2 и он стал выбранным)))) ;)
Пикнул по 3 и он стал выбранным,то есть объектом с каторым я могу манипулировать.
Вот пример:
Код:

If MouseHit(1)
pick=CameraPick(cam, MouseX(), MouseY())

For m.maps=Each maps
    If (pick=m\map);Если попали в  куб
      ;Тут надо сделать так чтоб выбрался тот куб на который пикнули,и в дальнейшем я мог поварачивать,передвигать только его.Если пикнул другой,то он становится выбранным.

      End If
Next
EndIf


Данил 02.11.2010 20:21

Ответ: Пикнуть объект
 
поискать на форуме трудно?! таких вопросов сотни!

Colossus 02.11.2010 21:01

Ответ: Пикнуть объект
 
юзай переменные ))

Program23 02.11.2010 21:05

Ответ: Пикнуть объект
 
Цитата:

юзай переменные ))
???????

EvilChaotic 02.11.2010 21:43

Ответ: Пикнуть объект
 
Запиши его хендел куда-нибудь. Если делать по быстрому и не красиво - в глобальную переменную.
Код:

Global PickedMap
Таким образом мы получим хендл, не забудем выйти из цикла.
Код:

For m.maps=Each maps
    If (pick=m\map)
        PickedMap = Handle(m)
        exit

      End If
Next

Дальше можешь делать что угодно с объектом типа в отдельных функциях.
Код:


Function Update_PickedEntity()
If PickedMap <> 0
  m.maps=Object.maps(PickedMap)

      ...
      TurnEntity m\map,x,y,z
      ...

End If
End Function

При сбросе куба(Например если нам не нужно выделать ничего) не забывай обнулять PickedMap, иначе тебе выдаст Мав.

EvilOkta 08.11.2010 14:58

Ответ: Пикнуть объект
 
Кстати похожий вопрос - есть ли возможность пикать объект по полигонам?...а то имею сетку из кубиков (платформа) 20х20 - пикается все здорово, но при увеличении поля до скажем 50х50 появляются заметные тормоза (наверное из-за того, что слишком много объектов ожидают пика), просто есть вариант заменить кубики одним объектом типа Cube или Plane и попробовать пикать полигоны....
собствено это надо для того чтобы получать координаты кубика (полигона?) для привязки курсора

Alex_Noc 16.02.2011 20:57

Ответ: Пикнуть объект
 
cam_pick=camerapickmode(cam,MX,MY)
if cam_pick<>0 then (подсветка и прочие эффекты)
if LMH then pick_obj=cam_pick (передали хендл объекта в друг переменную)
select pick_obj
case перечисляешь все обьекты через запятульку
If LMD=1 then
здесь реакция на реакция на нажатую кнопку (покрасить обьект)
присвоение тригов и переключалок событий
endif
default
возврат цветов если ниче не пикнуто
endselect
както так

}{@KeR 16.02.2011 21:27

Ответ: Пикнуть объект
 
Очень хорошая тема
Может кто нибудь написать примерчик???

Alex_Noc 16.02.2011 21:54

Ответ: Пикнуть объект
 
чем тебе выше не примерчик?

LLI.T.A.L.K.E.R. 16.02.2011 22:52

Ответ: Пикнуть объект
 
В стандартных примерах (samples и т.п.) Blitz3D есть все виды пик(ов)...
И полигон и модель и кубики и оптимизация пика из 10000 тыщ объектов


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot