Сорри, долго не заходил на сайт, а кроме меня по-моему здесь некому ответить.
Значит так. Есть такие команды в Блитзе как CameraPick() и EntityPickMode(). Для каждого объекта (для которого необходим выбор) выставляешь EntityPickMode (mesh1,2) EntityPickMode (mesh2,2) .....
Обычно (если объектов много) это делается в цикле:
;Создаем эти объекты
Dim object(500)
For i=0 to 500
object(i)=CreateCube ()
EntityPickMode (object(i),2) ; Здесь указываем что эти объекты содержаться в списке выбираемых
next
CameraPick(camera,MouseX(),MouseY())
Указываешь координаты (экранные) к примеру (640,480) (Это вместо MouseX(),MouseY() ) и при попадании экранных координат (640,480) на объект в 3д пространстве, в функцию возвращаеться его хендл. А зная хендл можно сделать с объектом все что угодно, и подсвечивать в том числе.
Если что не понятно,-спрашивай. Могу код написать.
Насчет того чтобы использовать 1 раз, то для этого существуют флаги (в данном случае просто переменная).
Условие таково - если нажата клавиша и экранные координаты соответсвуют позиции объекта (CameraPick()) то приравниваем переменную Flag = 1. Затем проверяем:
If Flag = 0 then
<выполняем действие с объектом>
else
<запрещаем действие (выводим надпись что мол запрещено) или еще что-то...>
endif