Место вылета пули по отношению к спраюту персонажа

SFML и C++ Уроки \ Разработка игр Форумы SFML System, Window и другие вопросы Место вылета пули по отношению к спраюту персонажа

В этой теме 12 ответов, 4 участника, последнее обновление  saxartom 9 мес., 2 нед. назад.

Просмотр 13 сообщений - с 1 по 13 (из 13 всего)
  • Автор
    Сообщения
  • #2879

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    Здравствуйте, вопрос состоит в том, как узнать координат точки на спрайте по отношению к окну игры, для того чтобы “пуля” вылетал из нужного места, при повороте спрайта на 180. На рисунка, что прилагается визуально отображена проблема.

    Красным обозначено координата в одном положении, а желтым как должно изменится.

    Вложения:
    You must be logged in to view attached files.
    #2884
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:584

    Зарегистрирован:
    04.01.2015

    Репутация:103

    Привет.

    У тебя ведь есть направление игрока. оно у тебя равно направлению пули, при направлении игрока вниз пуле можно задать смещение по x и y

    #2904

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    У меня персонаж поворачивается в сторону курсора мыши на все 360. Так же пуля – летит в место клика мыши. И направление пули и персонажа нигде не сохраняется.
    Может надо каким то образом определять направление? Если да, то не подскажете каким?

    #2907
    +1
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:584

    Зарегистрирован:
    04.01.2015

    Репутация:103

    В голове теоретически вижу так: поворачиваешь героя – это угол. Есть начальное состояние (смотрит вверх например, пуля слева вверху справа, угол =0 ), думаю можно “появлять” пулю с каким – то смещением в зависимости от самого угла.

    “Может надо каким то образом определять направление? Если да, то не подскажете каким?”

    Когда то была такая проблема, но я решил “влоб” введя направление движения, но оно мне и нужно было. Просто было около 8 условий, которые давали 8 направлений в зависимости от угла )) от 0 до 45 одно направление, ну и тд.

     

    #2908

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    То бишь, разбить 360 градусов на 8 сегментов по 45 и в зависимости от отклонения мыши от 0, в setPosition спрайта “пули” вводить 8 разных позиций?

    #2909
    +1
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:584

    Зарегистрирован:
    04.01.2015

    Репутация:103

    да, можно и так. в конце концов направления движения игрока часто должны быть. если игра раздуется , а у тебя враг бьёт сильнее в спину, то если у тебя есть направление движения – ты этот супер удар в спину от врага проверишь одним условием.

    #2910
    +1

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    спасибо, попробую. Отпишусь как получится.

    #2925
    +1

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    Я решил проблему по вашему совету так:
    добавил в функцию апдейт такой код:

    и при нажатии кнопки стрельбы считывал координаты персонажа и угол.
    Работает вроде бы корректно, визуально выгладит правильно.

    Это ли вы имели ввиду, или что-то другое, а я просто не правильно понял?

    #2927
    +1
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:584

    Зарегистрирован:
    04.01.2015

    Репутация:103

    Да, это. ) ну самое простое и понятное решение. вобще я думал ты направления движения введёшь, но так если устраивает, то оставляй. )

    Думаю должно быть решение по красивее и по короче – считать угол, на который ушёл курсор и на такой же угол поворачивать самого персонажа.

    #2937

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    персонаж у меня так и поворачивается, как вы говорите)) И действительно там в две строчки.

    А вот соответственно в нужное место ставить начало вылета “пули” получилось так. Визуально устраивает, но вот с точки зрения правильности кода – нет)) Но поскольку работает, то пока оставлю и в будущем возможно переделаю.

    #2944
    +1
    Heisenberg
    Heisenberg
    Участник
    Сообщений:314

    Зарегистрирован:
    01.04.2015

    Репутация:139
    #2946
    RazorNd
    RazorNd
    Участник
    Сообщений:46

    Зарегистрирован:
    04.02.2016

    Репутация:38

    Heisenberg, мне одному кажется что ты сначала умножаешь переменную angle на 180/PI, а затем на обратное число PI/180. Не лучше ли просто хранить угол в радианах?

    #3092

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    Спасибо, по вашему совету, получилось сделать.

Просмотр 13 сообщений - с 1 по 13 (из 13 всего)

Для ответа в этой теме необходимо авторизоваться.