Помогите пожалуйста с управлением танком
|
|
Litas | Дата: Пятница, 05 Августа 2016, 13:57 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Здравствуйте. Есть человек(obj_sold), есть танк(obj_tank). Не получается сделать так, чтобы при нажатии клавиши солдат садился в танк, а потом, при нажатии этой же клавиши, выходил из него. Скорость танка БОЛЬШЕ, чем скорость человека. Помогите это реализовать. Была идея, согласно которой солдат телепортировался в танк с последующим следованием за ним и увеличением скорости солдата(если point_distance(x,y,obj_tank.x,obj_tank.y) < 3), а при повторном нажатии клавиши человек телепортировался на расстояние > 3 от танка, но мне кажется, что есть метод менее упоротый. Буду очень благодарен.
|
|
| |
TLT | Дата: Пятница, 05 Августа 2016, 17:30 | Сообщение # 2 |
Сейчас на сайте
| Как вариант можно по нажатию кнопки убить объект игрока, а танку проиграть спрайты анимации входа в танк или как там у тебя... Не вижу смысла стыковать модуль к МКС.
Дао, выраженное словами, не есть истинное Дао.
|
|
| |
Litas | Дата: Пятница, 05 Августа 2016, 17:40 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Цитата TLT ( ) Как вариант можно по нажатию кнопки убить объект игрока, а танку проиграть спрайты анимации входа в танк или как там у тебя... Не вижу смысла стыковать модуль к МКС. Но ведь при выходе из танка у человека будет полное кол-во хп, если он был ранен. Ведь при выходе нужно будет создавать нового человека.
|
|
| |
Granner | Дата: Пятница, 05 Августа 2016, 18:09 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| Танкист в игре один? Как вариант-дополнение при "убить объект игрока": сделать глобальную переменную, в которую записывать хп уничтожаемого солдата. Когда надо "покинуть танк", создаешь солдата возле танка (неважно где) и присваиваешь ему количество хп из глобальной переменной.
Лучше - быть, чем - казаться. P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
|
|
| |
TeTaTeT | Дата: Пятница, 05 Августа 2016, 19:34 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| Можно еще проще: instance_deactivate_object.
Сообщение отредактировал PAULVIT - Пятница, 05 Августа 2016, 19:37 |
|
| |
TLT | Дата: Пятница, 05 Августа 2016, 19:38 | Сообщение # 6 |
Сейчас на сайте
| Цитата Litas ( ) Но ведь при выходе из танка у человека будет полное кол-во хп, если он был ранен. Ведь при выходе нужно будет создавать нового человека. Как подсказали уже, сохраняй нужные параметры в ini-файл.
Дао, выраженное словами, не есть истинное Дао.
|
|
| |
TeTaTeT | Дата: Пятница, 05 Августа 2016, 19:52 | Сообщение # 7 |
частый гость
Сейчас нет на сайте
| Цитата TLT ( ) Как подсказали уже, сохраняй нужные параметры в ini-файл.
Хранить временные данные в файле - это, как минимум, глупо.
|
|
| |
JohnnyHam | Дата: Пятница, 05 Августа 2016, 21:01 | Сообщение # 8 |
MadBro
Сейчас нет на сайте
| Попробуй так: чтобы садиться: При нажатии твоей клавиши change object (obj_sold) to (obj_tank) а спрайт персонажа сделай невидимым или спрячь куда-нибудь а так чтобы он вылезал на расстоянии не помню (давно гамаком не пользовался)
Чем лучше—тем хуже
|
|
| |
ArtGr | Дата: Пятница, 05 Августа 2016, 21:30 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| Цитата Litas ( ) Ведь при выходе нужно будет создавать нового человека.
Цитата PAULVIT ( ) Можно еще проще: instance_deactivate_object.
Или привязать человека к танку (лол). Опционально - сделать спрайт героя невидимым. Можно будет таким образом обыграть повреждения танка и травмирование экипажа.
... ла-ла-ла-ла-ла-ла-ла-ла! :-)
|
|
| |
TeTaTeT | Дата: Пятница, 05 Августа 2016, 21:52 | Сообщение # 10 |
частый гость
Сейчас нет на сайте
| Цитата ArtGr ( ) Опционально - сделать спрайт героя невидимым. И что с событиями делать? Они продолжат работать.
Сообщение отредактировал PAULVIT - Пятница, 05 Августа 2016, 21:52 |
|
| |
Litas | Дата: Пятница, 05 Августа 2016, 21:56 | Сообщение # 11 |
был не раз
Сейчас нет на сайте
| Цитата Granner ( ) Танкист в игре один? Как вариант-дополнение при "убить объект игрока": сделать глобальную переменную, в которую записывать хп уничтожаемого солдата. Когда надо "покинуть танк", создаешь солдата возле танка (неважно где) и присваиваешь ему количество хп из глобальной переменной.
Танкист в игре не один. И даже не 10.
Цитата JohnnyHam ( ) Попробуй так: чтобы садиться: При нажатии твоей клавиши change object (obj_sold) to (obj_tank) а спрайт персонажа сделай невидимым или спрячь куда-нибудь а так чтобы он вылезал на расстоянии не помню (давно гамаком не пользовался) Что-то не очень понял. Зачем заменять человека на танк? Солдат: Код if distance_to_object(obj_tank) < 5 && keyboard_check_pressed(ord('C')) { привязка к координатам танка до повторного нажатия кнопки(как это реализовать?) }
|
|
| |
TeTaTeT | Дата: Пятница, 05 Августа 2016, 21:57 | Сообщение # 12 |
частый гость
Сейчас нет на сайте
| Litas, я уже выше написал решение проблемы.
Сообщение отредактировал PAULVIT - Пятница, 05 Августа 2016, 21:57 |
|
| |
Интернет | Дата: Пятница, 05 Августа 2016, 22:03 | Сообщение # 13 |
постоянный участник
Сейчас нет на сайте
| Достаточно примитивный, но как вариант.
Код global.hp=100 ////////////////В игроке //Step if instance_exists(o_gg)!=0{ //********Нужные действия } if keyboard_check(vk_enter) and global.gg_aktiw=true{ if point_distance(x,y,obj_tank.x,obj_tank.y) < 3{ instance_destroy() }} else{ if place_free(o_tank.x+3*sign(o_tank.image_xscale),o_tank.y){ instance_create(x,y,o_gg) }}
Сообщение отредактировал Интернет - Пятница, 05 Августа 2016, 22:12 |
|
| |
ArtGr | Дата: Пятница, 05 Августа 2016, 22:18 | Сообщение # 14 |
старожил
Сейчас нет на сайте
| Цитата PAULVIT ( ) И что с событиями делать? Они продолжат работать.
В смысле - движение героя при нажатии на клавиши, всякое стрелянье и т.д.? Да, я проглядел это.
... ла-ла-ла-ла-ла-ла-ла-ла! :-)
|
|
| |
Litas | Дата: Пятница, 05 Августа 2016, 22:34 | Сообщение # 15 |
был не раз
Сейчас нет на сайте
| Цитата PAULVIT ( ) Можно еще проще: instance_deactivate_object. Спасибо. Но как избежать ошибки Unable to find any instance for object index '7' name 'obj_sold' после деактивации объекта?
|
|
| |
TeTaTeT | Дата: Пятница, 05 Августа 2016, 22:42 | Сообщение # 16 |
частый гость
Сейчас нет на сайте
| Цитата Litas ( ) Спасибо. Но как избежать ошибки Unable to find any instance for object index '7' name 'obj_sold' после деактивации объекта? Не найден экземпляр объекта obj_sold. Без кода не понятно. Ищите, где вы пытаетесь обратиться к "солдату". Помните, что деактивированный объект не доступен для использования. Кстати, раз у вас много "солдатов", то можете передавать в "танк" ID того, кто им управляет в данный момент. И проверку на нажатие клавиши C лучше делать именно в "танке".
Сообщение отредактировал PAULVIT - Пятница, 05 Августа 2016, 22:53 |
|
| |
Granner | Дата: Пятница, 05 Августа 2016, 22:46 | Сообщение # 17 |
почетный гость
Сейчас нет на сайте
| Цитата Litas ( ) Танкист в игре не один. И даже не 10. Подумал - и пофигу, один он или не один. Вариант с глобальной переменной все равно должен работать.
Лучше - быть, чем - казаться. P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
|
|
| |
ArtGr | Дата: Пятница, 05 Августа 2016, 23:17 | Сообщение # 18 |
старожил
Сейчас нет на сайте
| А если сделать локальную переменную для конкретного танка, которая будет содержать информацию о здоровье героя? Указывать ее значение и потом убирать героя, а когда герою надо выходить - создавать новый объект и ему присваивать параметр здоровья такой, как был раньше.
... ла-ла-ла-ла-ла-ла-ла-ла! :-)
|
|
| |
Интернет | Дата: Пятница, 05 Августа 2016, 23:40 | Сообщение # 19 |
постоянный участник
Сейчас нет на сайте
| Цитата Granner ( ) Танкист в игре не один. И даже не 10. Ну, ещё как вариант, можно значение hp каждого танкиста занести в список, а для значения pos использовать его id. Таким образом, можно будет контролировать hp всех танкистов в реальном времени. По моему достаточно удобно.
Сообщение отредактировал Интернет - Пятница, 05 Августа 2016, 23:47 |
|
| |
EfimovMax | Дата: Суббота, 06 Августа 2016, 04:20 | Сообщение # 20 |
заслуженный участник
Сейчас нет на сайте
| Чёта тут насоветовали :blink:
Делаешь у obj_solid переменную InTank=false При заходе в танк меняешь её на true, при выходе соответственно снова меняешь на false.
На весь код, который прописан у тебя для действий солдата проверяешь через иф
if InTank=false { //например тут у тебя движение солдатом } else if InTank=false { //тут можно спрятать солдата и задать ему координаты подальше чтобы не мешался visible=false x=-100 y=-100 // и собственно после передаёшь управление танку }
Текущий проект: The Experiment ☭
Выпущенные проекты Steam: Princess.Loot.Pixel.Again Princess.Loot.Pixel.Again x2 Dungetris
Сообщение отредактировал EfimovMax - Суббота, 06 Августа 2016, 04:21 |
|
| |