Четверг, 26 Декабря 2024, 18:00

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Помогите пожалуйста с управлением танком
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
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг