Воскресенье, 22 Декабря 2024, 08:24

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Game Maker Studio Master Collection
mkostoevrДата: Воскресенье, 22 Ноября 2015, 23:43 | Сообщение # 1
частый гость
Сейчас нет на сайте
Значится так:

Мы имеем 4 объекта:

1) obj_hand
2) obj_movie
3) obj_bullet
4) obj_weapon

И четыре спрайта:

1) spr_hand
2) spr_movie
3) spr_bullet
4) spr_weapon

(Natürlich)

Дальше...

Мне нужно, чтобы "obj_hand" плавно поворачивался по направлению к курсору мыши (Ну, или примерно к курсору мыши). Сделал я это так...

Код
Присоединил к объектам "obj_hand" и "obj_weapon" изображения одинакового размера, и поставил у этих изображений (спрайтов) одинаковые "точки отсчёта" (или "Origin"), а сделал я последние 2 действия потому, что не знал как сделать так, чтобы пистолет был "привязан" к руке, поэтому решил сделать как-бы один объект продолжением другого... В "obj_hand" в событии "Step" вписал:

direction = point_direction(x,y,obj_movie.x,obj_movie.y);
image_angle = direction

Сделал то же самое с объектом "obj_weapon", НО (!), в "obj_weapon" добавил такие строчки строчки:

x=obj_hand.x
y=obj_hand.y

Чтобы, цитата: "пистолет был "привязан" к руке".

Далее...

У нас был объект "obj_movie", так вот, ему в событии "Step" прописал:

move_towards_point (obj_movie.x, mouse_y, 10);

Усё... Теперь объект "obj_movie" медленно движется за курсором мыши по оси о(Y), а объекты "obj_hand" и "obj_weapon" поворачиваются за ним...


Теперь мне нужно, чтобы при нажатии ЛКМ* пистолет "obj_weapon" стрелял пулями "obj_bullet":

Код
В событии "Global left button" объекта "obj_weapon" "Перетащил" создание объекта "obj_bullet" в нужных мне координатах:

x=obj_weapon.x+128
y=obj_weapon.y+32

Теперь при нажатии ЛКМ* появляются пули

Затем в событии "Step" объекта "obj_bullet" прописал:

move_towards_point (obj_movie.x, obj_movie.y, 10);
image_angle = direction;

Теперь пули летят в нужную сторону.


И все бы хорошо, но вот...











Почему пули всегда появляются в одном и том же месте игнорируя поворот объектов "obj_hand" и "obj_weapon" и как это исправить?

_________

* - Левая Кнопка Мыши


Ерунда всё это
cnstntnДата: Понедельник, 23 Ноября 2015, 00:07 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
не знаю как в GMS, но в Construct2 это выглядит так:
у obj_weapon создаем дополнительный hotpoint (точка привязки чего-либо к чему-нибудь), назовем его bullet_spawner..
и при нажатии ЛКМ, obj_weapon создает obj_bullet в точке bullet_spawner.

+ указываем угол полета пули...
hero564Дата: Понедельник, 23 Ноября 2015, 01:08 | Сообщение # 3
Made in Ukraine
Сейчас нет на сайте
mkostoevr, у тебя пуля создается независимо от угла поворота оружия, создавать пулю нужно в позиции:

Код
bullet = instance_create(obj_bullet,obj_hand.x+sin(degtorad(obj_hand.direction))*hand_len,obj_hand.y+cos(degtorad(obj_hand.direction))*hand_len)
bullet.direction = obj_hand.direction


hand_len - расстояние на котором должна создаваться пуля от центральной точки спрайта руки


Сообщение отредактировал hero564 - Понедельник, 23 Ноября 2015, 01:09
mkostoevrДата: Вторник, 24 Ноября 2015, 18:19 | Сообщение # 4
частый гость
Сейчас нет на сайте
CGFCB<J!!!
Всё отлично!

С одной только помарочкой:

Не:

Цитата hero564 ()
instance_create(obj_bullet,obj_hand.x+sin(degtorad(obj_hand.direction))*hand_len,obj_hand.y+cos(degtorad(obj_hand.direction))*hand_len)


А:

Код
instance_create(obj_hand.x+sin(degtorad(obj_hand.direction))*128, obj_hand.y+cos(degtorad(obj_hand.direction))*-9, obj_bullet)


Но всё равно: ОГРОМНОЕ СПАСИБО!


Ерунда всё это
  • Страница 1 из 1
  • 1
Поиск:

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