создал поворот объекта к точке, которая определяется нажатием ЛКМ Суть в том что в зависимости от расположения точки назначения объект поворачивается к нему не моментально, пока его направление не совпадет с вектором направления., и при этом объект движется, потому получается поворот при движение. исходник вот код
d=point_direction(x,y,Cursor.x,Cursor.y) angl = image_angle mod 360 if((image_angle mod 360) != (d div 4)*4) { if((((d-angl)+360) mod 360) <= 180) { image_angle +=4 direction = image_angle motion_set(direction,speed) } else { image_angle -=4 direction = image_angle motion_set(direction,speed) } } формулу поворота сделал не сразу, через ошибки. много багов было. так что сама формула рабочая теперь. Прибавляю 360 градусов при нажатии мыши по той причине, чтобы не получить отрицательное число, иначе будет баг. Чтобы учитывать отрицательный угол нужно вводить доп условия, и немало, чтобы еще при этом определять угол(ведь 30градусов не равно -30)
В принципе код выполняет свою функцию, но не совсем корректно. А именно:
если нажать мышкой сбоку от объекта и недалеко от него(но не слишком близко), то он будет все время кружить, так как не столкнется с курсором.
Нужно внести кое-какие дополнения в код чтобы исключить этот баг http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Суббота, 17 Сентября 2011, 12:35
не подошло, потому что поворот стал резким, весь мой труд перечеркнул
внимание! Я сделал формулу чтобы объект поворачивался к цели плавно, делая вираж. Нужно еще подкорректировать чтобы он не кружил вечно, когда точка назначения слишком близко к нему, но и не вплотную http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Суббота, 17 Сентября 2011, 15:16
vsDaTavs, у меня была в точности такая же проблема в одной моей стратегии. Как вариант предлагаю разворот на месте, а после движение к точке. А вот как я исправил я уже и не помню.
Насчёт плавного поворота - в FAQ для новичков от ДезСоула есть такой вопрос. Можешь с ним свериться. Дамы и господа, я представляю вам человека, которому н-а-с-р-а-т-ь! (с) Доктор Кокс.
Это запросто, ничего трудного. Только меня это не устраивает. П.С. вариант есть стопудово. что то крутится в уме. только я никак не могу включить мозги с этой пятницы
Quote
FAQ для новичков от ДезСоула
да полезная статейка. только сразу так там и не найдешь, кокопаюсь http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Суббота, 17 Сентября 2011, 15:21
Добавлено (17.09.2011, 15:18) --------------------------------------------- vsDaTavs, сейчас попробую сам сообразить, покопаюсь в своей игре.
Добавлено (17.09.2011, 15:21) --------------------------------------------- Интересный факт, у себя я это так и не исправил... Весьма странно...
В общем, мб проверять расстояние от игрока до точки и, если оно меньше радиуса минимального круга разворота - сбавлять скорость.
Добавлено (17.09.2011, 15:22) --------------------------------------------- Таким образом, постепенно сбрасывая скорость, мы понемногу будем уменьшать радиус минимального круга разворота, до тех пор, пока точка не окажется вне этого самого круга...
Добавлено (17.09.2011, 15:25) --------------------------------------------- Насчёт FAQ, он довольно-таки удобен, разделы для того и сделаны. Вопрос по этой теме идёт как II.2.8. Как сделать плавный поворот турели?. Ну, только он подходит не только к турели, естественно. Кстати, поэтому при нём и проходит твой же баг - турель стационарна.
Дамы и господа, я представляю вам человека, которому н-а-с-р-а-т-ь! (с) Доктор Кокс.
Если нажать оч близко сбоку к объекто то он поворачивается почти на месте.Так и задумано. Но если сделать по вашему, вероятно это эффект не изменится. Но проблемы возникнут с градусами. Ведь в формуле проверка на "=" ведь если больше или меньше то будет родолжаться поворот в определенную сторону каждый шаг. 24-4-4-4-4 т е 4 шага он повернется а на 6 шаг градус 0, т е направление более не меняется 24 - 4 - 4 - 4 -3 -2 - 2 что же получится, ноль будет проскочен., и будет в итоге объект вертется то вправо то влево. я с этим багом сталкивался при построение формулы.
суть в том что объект движется и поворачивается на угол пропорциональный его скорости. например скорость 3 и поворот 3 или скорость 6 и поворот 3, т к 6 кратно 3
Quote
проходит твой же баг - турель стационарна
не правильно. со стационарной моделью все гораздо проще. есесно ей не надо замерять расстояние, и вследствие она не зациклится. ее достатчно просто поворачивать в таком то направление., каждый шаг определяя это направление Так что здесь я с вами не согласен. Турелья я и так могу сделать http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Суббота, 17 Сентября 2011, 15:41
vsDaTavs, мм я о турели так и сказал, просто не совсем ясно формулирую. При создании кода из FAQ думали о турелях, которые никуда не движутся. И поэтому использование этого кода вызовет тот же баг. Дамы и господа, я представляю вам человека, которому н-а-с-р-а-т-ь! (с) Доктор Кокс.
Если объект будет плавно сбавлять скорость, то он все равно сделает несколько кругов вокруг точки, что не есть нормально.
Я уже сделал что требовалось . Действительно надо проверять раастояние, но сбавить скорость резко, на минимальную величину, кратную скорости и угла поворота. И ето ессесно единица. С такой скорость объект будет двигаться вперед крайне медленно и позицию не пропустит. И эффект получается. http://farchive.jino.ru/
Сообщение отредактировал vsDaTavs - Суббота, 17 Сентября 2011, 16:15
А попробуй сделать как я сделал,что при нажатий появляется зелёный квадрат,и при столкновений с ним он уничтожался,а так оставь свое все. 3дэшечки: https://sketchfab.com/myactyindie Курентли воркс он: https://myacty.itch.io/raskopnik
MyACT, да... видно, что ты делаешь тяп-ляп, не вникнув в код. vsDaTavs, рад, что помог найти решение. Возможно, я сделаю так же у себя) Дамы и господа, я представляю вам человека, которому н-а-с-р-а-т-ь! (с) Доктор Кокс.