проблема с направлением оружия
|
|
Dat_Spy | Дата: Четверг, 19 Февраля 2015, 16:39 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Недавно решил сделать оружие в игре, и столкнулся с такой проблемой: центр спрайта у меня стоит на рукояти оружия, но дуло оружия должно быть повернуто в сторону мыши, а сама проблема в том, что в сторону мыши смотрит как раз рукоять, а не дуло. Прошу помочь с этой проблемой, возможно, это надо исправлять с помощью lenghtdir? Вообщем вот картинка которая описывает проблему
Сообщение отредактировал Dat_Spy - Четверг, 19 Февраля 2015, 16:39 |
|
| |
overbolt | Дата: Четверг, 19 Февраля 2015, 16:54 | Сообщение # 2 |
Overbolt's Project
Сейчас нет на сайте
| Если я тебя правильно понял то центр у тебя в дуле, поэтому он так поворачивается,поставь центр между рукоятью и дулом
Сообщение отредактировал overbolt - Четверг, 19 Февраля 2015, 16:57 |
|
| |
Dat_Spy | Дата: Четверг, 19 Февраля 2015, 16:56 | Сообщение # 3 |
частый гость
Сейчас нет на сайте
| overbolt, тогда это будет выглядеть как-будто персонаж держит оружие за ствол, а не за рукоять. И поворачивается оружие отлично, но дуло смотрит немного выше курсора, а должно смотреть прямо на него
|
|
| |
overbolt | Дата: Четверг, 19 Февраля 2015, 17:00 | Сообщение # 4 |
Overbolt's Project
Сейчас нет на сайте
| У тебя рука персонажа отдельный объект от оружия?тогда просто отрисовывай или привяззывай объект по y+20 (или какая там разность от координат центра до координат рукоятки?
Сообщение отредактировал overbolt - Четверг, 19 Февраля 2015, 17:03 |
|
| |
Dat_Spy | Дата: Четверг, 19 Февраля 2015, 17:03 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| overbolt, нет, как раз рука связанна с оружием, и центр стоит на плече, и поэтому дуло смотрит не прямо на курсор (херню сморозил)
|
|
| |
overbolt | Дата: Четверг, 19 Февраля 2015, 17:18 | Сообщение # 6 |
Overbolt's Project
Сейчас нет на сайте
| Dat_Spy, если не трудно можешь скинуть пример в личку,может помогу так как сам я не профи,объяснить нормально я не смогу
Добавлено (19 февраля 2015, 17:18) --------------------------------------------- Dat_Spy, черт,Game maker Studio.У меня 8.0,открыть не могу,сори.Ну если спрайт руки и оружия один,напоследок могу сказать,подними по y чуть выше плеча,чтобы примерно на уровне дула было.
Сообщение отредактировал overbolt - Четверг, 19 Февраля 2015, 17:21 |
|
| |
aFriend | Дата: Четверг, 19 Февраля 2015, 20:59 | Сообщение # 7 |
участник
Сейчас нет на сайте
| Тебе нужно использовать функции lengthdir_x и lengthdir_y
|
|
| |
OpenGOO | Дата: Пятница, 20 Февраля 2015, 12:34 | Сообщение # 8 |
почти ветеран
Сейчас нет на сайте
| Dat_Spy, так что ли должно быть?
Демо
Мои проекты: - Свободный и открытый клон World Of Goo - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
[GameMaker: Studio v1.4.9999]
Сообщение отредактировал OpenGOO - Суббота, 21 Февраля 2015, 12:14 |
|
| |
Dat_Spy | Дата: Пятница, 20 Февраля 2015, 16:53 | Сообщение # 9 |
частый гость
Сейчас нет на сайте
| OpenGOO, да, если рука и оружие - единый объект и центр стоит на "плече"
|
|
| |
OpenGOO | Дата: Пятница, 20 Февраля 2015, 18:13 | Сообщение # 10 |
почти ветеран
Сейчас нет на сайте
| У меня оружие это предмент, но думаю что не в этом суть. Если я тебя понял, ты хочешь поместить курсор на уровене дула, если так, то тебе надо рисовать фейковый курсор в том месте, где ты считаешь он должен находиться.
Мои проекты: - Свободный и открытый клон World Of Goo - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
[GameMaker: Studio v1.4.9999]
|
|
| |
Overdrave | Дата: Пятница, 20 Февраля 2015, 23:47 | Сообщение # 11 |
частый гость
Сейчас нет на сайте
| 1)Поставь центр спрайта в точку соединения рукояти и ствола 2)Высчитывай x и y таким образом (перед этим лучше создавать объект оружия строго там, где оно должно стоять): Код x=[старый x, куда раньше "крепилась" рукоять]+lengthdir_x([длина рукояти],point_direction(x,y,mouse_x,mouse_y)+90) y=[старый y, куда раньше "крепилась" рукоять]+lengthdir_y([длина рукояти],point_direction(x,y,mouse_x,mouse_y)+90)
Сообщение отредактировал Overdrave - Суббота, 21 Февраля 2015, 08:06 |
|
| |
OpenGOO | Дата: Суббота, 21 Февраля 2015, 10:52 | Сообщение # 12 |
почти ветеран
Сейчас нет на сайте
| Нашел я решение и без фейкового курсора.
p1 это центр спрайта руки (плечо) p2 это центр спрайт оружия p4 это место откуда вылетают пули (указал приблизительно) x и y это координаты точки p1 h это расстояние между точками p2 и p3 rotate это угол поворота руку
Код var dx = mouse_x - x; var dy = mouse_y - y; var len = sqrt(dx*dx + dy*dy); dx = dx/len * h; dy = dy/len * h; var x2 = mouse_x - dy; var y2 = mouse_y + dx; var rotate = point_direction(x, y, x2, y2);
Demo
Мои проекты: - Свободный и открытый клон World Of Goo - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
[GameMaker: Studio v1.4.9999]
Сообщение отредактировал OpenGOO - Суббота, 21 Февраля 2015, 12:13 |
|
| |