Понедельник, 11 Ноября 2024, 02:39

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Привязка одного объекта к другому после столкновения
booblikДата: Четверг, 29 Сентября 2016, 16:11 | Сообщение # 1
уже был
Сейчас нет на сайте
Всем привет!

Помогите привязать объект к другому объекту. Это моя основная задача.

Сейчас опишу ситуацию.

Я совсем недавно загорелся написать мелкую игрульку. Пришёл к выводу, что лучше для меня подойдёт конструктор game maker studio.
Смог силами интуиции и поиска сделать следующее:
Есть комната с физикой, которая встроенная.
В ней вы управляете игроком, к которому привязан лук и крутится по направлению к мышке.
При нажатии на левую клавишу мыши начинает работать счётчик +0.1, который отвечает за силу выстрела.
Как только отпускаем клавишу вылетает стрела с заданным импульсом, с силой, какой накрутил счётчик.
С помощью place_meeting определяю столкновение со стеной и как только срабатывает условие ставлю у стрелы:
phy_active = false;
phy_fixed_rotation = true;
Всё хорошо, она воткнулась и торчит в стене как надо :)
У меня есть объект монстр, на карте их может быть много. У меня к примеру их два. Они летают случайным образом и даже стреляют.
Тут тоже всё хорошо.
Не получается сделать так, чтобы воткнувшись в монстра стрела и оставалась в нём.
Такая конструкция не работает:

if place_meeting(x, y, Monster){
phy_speed_x = other.phy_speed_x;
phy_speed_y = other.phy_speed_y;
}
К сожалению не работает. А вот в событии collision - other находится на ура. Но меня это не устраивает, т.к. стрела успевает отскочить в таком случае.
Сам я не местный, 3-4 дня назад начал разбираться, многих функций и методов просто не знаю.
Помогите чем можете.

Спасибо, что смогли дочитать до конца :)

Добавлено (29 сентября 2016, 16:11)
---------------------------------------------
Ещё одно уточнение. Воткнувшись в монстра стрела должна именно с ним летать в дальнейшем, т.е. куда воткнулась там и осталась.

FireF1yДата: Воскресенье, 02 Октября 2016, 05:56 | Сообщение # 2
был не раз
Сейчас нет на сайте
Физику не использовал никогда, но может быть получится привязать координаты к instance_nearest(Monster)
AlexanderBekkerДата: Воскресенье, 02 Октября 2016, 06:44 | Сообщение # 3
BekkerDev Studio
Сейчас нет на сайте
При столкновении стрелы с монстром запоминай его id и в дальнейшем работай с ним:
Код
if (monsterId) {
   phy_speed_x = monsterId.phy_speed_x;
   phy_speed_y = monsterId.phy_speed_y;
}


Разработчик, композитор и издатель инди-игр в Steam.
Редактор карт: BekkerDev Level Editor 4
Страница разработчика в Steam
Паблик ВК: BekkerDev Studio
booblikДата: Четверг, 06 Октября 2016, 15:38 | Сообщение # 4
уже был
Сейчас нет на сайте
Пока что сделал так:
if place_meeting(x, y, Monster){

phy_fixed_rotation = true;
phy_angular_velocity = 0;

physics_apply_force(x, y, 0, -6.5); //чтобы стрела не падала вниз из-за массы

var inst = instance_position(x, y, Monster);
if instance_exists(inst){
phy_speed_x = inst.phy_speed_x;
phy_speed_y = inst.phy_speed_y;
}

}
Тут стрела в какого монстра воткнулась, с тем и осталась.

Если будут косяки или найду способ правильный, без наворотов, то переделаю


Сообщение отредактировал booblik - Четверг, 06 Октября 2016, 15:42
  • Страница 1 из 1
  • 1
Поиск:

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