Показать сообщение отдельно
Старый 09.08.2006, 00:24   #2
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Сообщение Re: Картостроение!

Во-первых - обзови кнопки в редакторе интуитивно понятными именами (OPEN_DOOR1,CLOSE и т.п.).
Затем при загрузке уровня поставь кнопкам (рычагам и прочему стафу, который можно объеденить в одну логическую группу - "активаторы" или "выключатели") определённый тип, например:
[highlight=blitzbasic]
global BUTTON_TYPE=1
;.....................
ST_button=FindChild(world,"Stop")
EntityType ST_button,BUTTON_TYPE
[/highlight]
Далее - поставь флаг найденному мешу, чтобы его можно было "пикнуть" камерой, например:
[highlight=blitzbasic]
EntityPickMode ST_button,2
[/highlight]
Где-то в главном цикле игры, обрабатывай нажатие на кнопку.
Для эого сначал пикай камерой, например для FPS:
[highlight=blitzbasic]
select_obj=CameraPick(camera,GraphicsWidth()/2,GraphicsHeight()/2)
[/highlight]
затем обрабатывай пикнутое:
[highlight=blitzbasic]
Local button_name$=""
If select_obj<>0
if GetEntityType(select_obj)=BUTTON_TYPE
button_name$=EntityName(select_obj)
endif
EndIf
[/highlight]
И если пользователь щёлкнул не по пустоте - в строке button_name$ у тебя будет имя кнопки. Затем обрабатываем её:
[highlight=blitzbasic]
Select button_name$
Case "V+"
VLIFT=VLIFT+DV
edit_shm()
Case "V-"
VLIFT=VLIFT-DV
edit_shm()
Case "A+"
ALIFT=ALIFT+DA
edit_shm()
Case "A-"
ALIFT=ALIFT-DA
edit_shm()
Case "STOP"
ALIFT=0
VLIFT=0
edit_shm()
End Select
[/highlight]
Примерно так...
Всё зависит от конкрети игры. Можно вместо имён прописывать кнопкам, взамен их имён (по которым ты их найдёшь среди прочих чайлдов) хендлы на элементы типа (создать специальный тип - событие). А в экземплярах этого типа указывать - действие, его продолжительность, вовлечённые объекты.
Можно замутить целую скриптовую систему: описанные выше пертурбации делать не вручную, а на основе конфигурационного файла уровня - в нём будет прописано, какой кнопке какого рода событие надо постваить в соответствие.
А если подумать ещё глобальнее - то конфигурациооный файл должен быть создан не в ручную, а на самопальной проге, как раз для такого случая написанной.

вот тут http://www.boolean.name/showthread.php?t=653
можешь посмотреть на демку, где лифт управляется кнопками, размещёнными в кабине.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием