| Конфликт между траекторией движения и гравитацией | 
|  | 
| 
| Granner | Дата: Понедельник, 14 Марта 2016, 11:32 | Сообщение # 1 |  | почетный гость Сейчас нет на сайте | GM 8 Pro Есть необходимость заставить объект двигаться по созданной траектории, в зависимости от расстояния до ключевого объекта. Например, ГГ (главный герой) огибает угол по ровной кривой, радиус которой зависит от расстояния между ГГ и точкой угла.
 Делал так:
 Е-key
 
 Код x2=skill.x; y2=skill.y;
 x1=krur.x; y1=krur.y;
 rad=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
 ugol=degtorad(10);
 count=0;
 rep=19;
 for (i=1;i<rep; i+=1)
 {
 yn=(rad*sin(ugol*i))+y1;
 xn=(rad*cos(ugol*i))+x1;
 if xn>x2 {instance_create(xn, yn, kapl); count+=1;}
 }
 for (i=0;i<count; i+=1)
 {
 near=instance_nearest(skill.x,skill.y,kapl)
 if near.x>skill.x
 {
 if place_free(near.x+2,near.y)
 {skill.x=near.x;
 skill.y=near.y;
 }
 }
 }
Создание траектории и движение ГГ (объекта skill) работает так, как мне нужно, НО!
 При переносе в основной проект возникла проблема, ибо ГГ имеет гравитацию и вертикальную скорость. Решал эту проблему добавлением переменной skill.go=true; в вышеуказанный код.
 А в Step ГГ добавлял проверку кнопками:
 
 Код if skill.go is equal to trueset the gravity to 0 in direction 0
 set variable vspeed to 0
Получилось так - траектория создается нормально, при удерживании E-key ГГ зависает в воздухе (вроде как гравитация и вертикальна скорость отключены правильно), но не перемещается по траектории. Хотя видно, что в нужную сторону ГГ чуть-чуть смещается при каждом нажатии E-key.
 Что делать?
 
 Лучше - быть, чем - казаться.
 P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
 
 
 Сообщение отредактировал Granner - Понедельник, 14 Марта 2016, 11:34 |  |  |  |  | 
| 
| Tymonr | Дата: Понедельник, 14 Марта 2016, 12:43 | Сообщение # 2 |  |   With OpenSource forever♥ Сейчас нет на сайте | If skill.go if equal to true:D 
 Если вода мокрая...
 
 Только ты же добавил код на смещение на е-кей. Вот ты один раз нажимаешь, он один раж срабатывает. Надо его в степ пихаить
 
 Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы.
 Как правильно задавать вопросы в технических форумах
 |  |  |  |  | 
| 
| Granner | Дата: Понедельник, 14 Марта 2016, 12:48 | Сообщение # 3 |  | почетный гость Сейчас нет на сайте | Цитата Tymonr (  ) If skill.go if equal to true:DТам просто еще событие было для отпускания E-key: skill.go=false (при отпускании клавиши гравитация и вертскорость возвращались в норму).
 А насчет пихания в степ - попробую.
 
 Лучше - быть, чем - казаться.
 P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
 |  |  |  |  | 
| 
| Tymonr | Дата: Понедельник, 14 Марта 2016, 14:27 | Сообщение # 4 |  |   With OpenSource forever♥ Сейчас нет на сайте | Granner, я не о том. Бессмысленно сравнивать булевую переменную с булевым же значением. Достаточно if true/false
 
 Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы.
 Как правильно задавать вопросы в технических форумах
 |  |  |  |  | 
| 
| Granner | Дата: Вторник, 15 Марта 2016, 11:54 | Сообщение # 5 |  | почетный гость Сейчас нет на сайте | Код перемещения из события E-key перенесен в степ объекта ГГ - и не работает. Результат аналогичный начальному. И там не нажатие кнопки E, а удержание, то есть может быть степ тут и не нужен?
 
 Лучше - быть, чем - казаться.
 P.S. Прежде чем задавать вопрос - всегда просматриваю форум и справку
 |  |  |  |  |