Среда, 13 Ноября 2024, 12:07

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
проблема с направлением оружия
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, если не трудно можешь скинуть пример в личку,может помогу sad так как сам я не профи,объяснить нормально я не смогу

Добавлено (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
  • Страница 1 из 1
  • 1
Поиск:

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