Дата: Пятница, 15.10.2010, 14:19 | Сообщение # 761
Сообщений: [1475]
Naruto9827, вижу, ты начал что-то понимать =) Мой запас добра полон, но надеюсь, и твоя способность понимать тоже, так что давай я тебе объясню. В Game Maker есть мизерные элементы ООП (Объектно-Ориентированное Программирование), думаю, из названия понятно, что это. ООП подразумевает многие хитрости и вещи, но по сути это просто работа с объектами, и у каждого свои переменные, к примеру своя переменная health и т. д. и т. п. Думаю, ты понял. Если ты захочешь получить доступ из одного объекта к переменной другого, то такая запись:
Code
show_message(health)
не выдаст тебе того, что ты хочешь. Она выдаст жизни этого объекта, а вот эта запись:
Code
show_message(object.health)
выдаст тебе жизни объекта под названием object. Т. е. ты должен писать имя_объекта.нужная_переменная, и всё ОК будет. Так вот, если ты что-то рисуешь объектом, то спрайт показываться не будет (не знаю сам, почему), и поэтому все рисовалки надо сбрасывать в отдельный объект. Назовём его health_bar к примеру. Так вот там в Draw пишешь:
Code
draw_text(view_xview+3,view_yview+3,hero.health)
Щас всё поясню. В данном случае объект hero - герой, которого жизни собственно нам и нужны. Переменные view_xview и view_yview содержат координаты камеры (левый верхний угол по x и по y). Таким образом, мы рисуем жизни в левом верхнем углу экрана с отступом в 3px. Почему мы использовали view_xview+3 и view_yview+3, а не просто 3? Потому что в дальнейшем ты захочешь сделать так, чтобы камера следила за объектом, и если поставишь 3, а не view_xview+3, то рисоваться будет в левом верхнем углу комнаты, а не камеры. x и y отмеряются от начала комнаты. А те жизни, которые тебе дал Путник, двигаются за героем, т. к. он написал:
Code
draw_text(x,y,health)
а x и y - это переменные, хранящие месторасположение объекта. На заметку: mouse_x и mouse_y - координаты мыши, чтобы не было разнобоя с разрешениями устанавливай нужное сам. Зайди слева в Global Settings, там где-то это можно настроить. George & Daniel: Война сухофруктов
Дата: Пятница, 15.10.2010, 17:01 | Сообщение # 762
Сообщений: [93]
я сейчас эти все коды перепробовал, но у меня заместо игры открывается окошко и как будто коды неверные пишет вот что в окошке написано ___________________________________________ ERROR in action number 2 of Create Event for object герой:
Error in code at line 1: show_message(object.health) ^ at position 14: Unknown variable object
Сообщение отредактировал: Naruto9827 - Пятница, 15.10.2010, 17:09
Дата: Пятница, 15.10.2010, 18:41 | Сообщение # 763
Сообщений: [1475]
Naruto9827, тут всё понятно написано - ты не объявил переменную health у объекта object. В create ты можешь использовать переменные других объектов только тогда, когда ты уверен, что эти другие объекты есть и что у них есть эта переменная. George & Daniel: Война сухофруктов
Дата: Пятница, 15.10.2010, 20:42 | Сообщение # 764
Сообщений: [93]
я не понял, как обьявить переменную health у объекта object?
Добавлено (15.10.2010, 20:42) --------------------------------------------- ладно с жизнями мы разобрались, а как теперь сделать чтоб враги бегали в разные стороны?
Дата: Суббота, 16.10.2010, 12:16 | Сообщение # 770
Сообщений: [93]
да, теперь они двигаются в разные стороны, но когда они сталкиваются со стеной они больше не двигаются ВОПРОС: как сделать так чтоб они по всей площади ходили и когда сталкивались со стеной шли в другое место?
Дата: Суббота, 16.10.2010, 13:26 | Сообщение # 771
Сообщений: [1475]
Naruto9827, самый примитивный способ и по-моему дебильный это поставить на collision со стеной
Code
action_bounce()
а ваще включи логику! Если проблема в столкновении, то делай обработку collision, если ошибку выдаёт такую, то переменную не обозначил... Без логики в программировании никуда! Думай сам, только потом спрашивай на форуме. George & Daniel: Война сухофруктов
Дата: Суббота, 16.10.2010, 19:01 | Сообщение # 773
( программюга )
Сообщений: [298]
Обработку? Это как? Чтобы переменная изменялась или выводилась? А обозначить - в "create" объекта у которого должна быть эта переменная пишешь (действие execute code)
Но есть маленький ньюанс (правильно написал?). Если значение переменной НЕ числовое и не true или false, то значение заключается в апострафы (ковычки). Например. " weapon='Автомат' ". " money=200 ". " have_weapon=false ". " have_pistol=true ".
Таким образом всё будет слева сверху с отступом в 2px.
Добавлено (17.10.2010, 10:03) --------------------------------------------- Naruto9827, что тут непонятного?!!! Скажи что ты вообще понял из тех уроков которые ты "смотрел"!!!! Ставишь на объект врага на collision со стеной такой код:
Code
action_bounce()
что тут сложного???? Тебе ваще сколько лет?!!! George & Daniel: Война сухофруктов