P.S. хотя наверное правильней делать через Virtual Button.
Именно. А вообще, что бы friction работал, надо через vspeed работать, а не через координаты А звезды, будто мириады стрел, Ловя на мушку силуэты снов. Смеется и злорадствует любовь, И мы с тобой попали в их прицел...
Начнем с того что friction - это воздействие на скорость, а не координаты. По сути, friction - это уменьшение speed каждый шаг на определенную заданную тобой величину. В свою очередь, speed - это совокупность горизонтальный и вертикальной проекций скорости, проще говоря - hspeed и vspeed. И потому, фактически, friction воздействует именно на них, а не на speed как таковую. Пропорции уменьшения значений этих проекций вычисляются через простейшие тригонометрические формулы, исходя из значения direction объекта. Короче, Склифасофский. Хочешь трения - просто в степе приближай к нулю(не уменьшай! Скорость может быть отрицательной) нужную тебе проекцию. Как то так Ghaarp
XDominator, прошу прощения, не знаю, как у вас в ГМ 8, но в ГМС ведь скорость - это отдельная величина, означающая изменение координат за один шаг в определенном направлении. Когда скорость равна, например, 10, hspeed и vspeed могут оставаться нулевыми, т.е. на эти величины изменение speed никакого влияния не несет. Получается, что friction влияет именно на speed.
Overdrave, перечитай внимательней мой пост. Speed - это лишь результат сложения векторов vspeed и hspeed. Направление результирующего вектора = direction, его длина - speed. Ты можешь задавать speed и direction напрямую - тогда ГМ рассчитает значения vspeed и hspeed исходя из speed и direction, т.е. произведет действия как бы в обратном порядке. Эти пары переменных взаимосвязаны, их нельзя разделить. Friction действует на speed, по факту - просто выполняет код speed -= friction(обычная скорость не может быть отрицательной, в отличии от проекций. Если гамак обнаруживает отрицательную скорость, то он просто выполняет прибавку 180 градусов к direction, т.е. как бы разворачивает объект.). Простейшая геометрия. Ghaarp
Тебе кажется. friction - это число, которое просто пошагово вычитается из скорости. И поэтому указанное тобой трение - это не совсем трение, а нечто другое, и явно не то о чем спрашивал автор изначально. Ghaarp
трение реализуется просто. в событии, например, движения вправо пишем:
Код
hspeed=4;
и там же:
Код
friction=0.5;
таким образом при нажатии соответствующей клавиши игрок начнет двигаться вправо. если ее отпустить, то от модуля hspeed будет постепенно отниматься 0.5 до тех пор, пока значение скорости не будет равняться нулю. если движение осуществляется не посредству hspeed или vspeed, то friction работать не будет.
чем еще помочь автору, не знаю. в таких ситуациях без исходника ничем не помогу.
В твоем примере, friction будет в полной мере отниматься от hspeed только если не будет вертикальной составляющей. friction все таки отнимается от speed, а hspeed и vspeed рассчитываются уже по измененной speed. Хотя мне кажется автору такие тонкости вообще уже ни к чему) Ghaarp
В твоем примере, friction будет в полной мере отниматься от hspeed только если не будет вертикальной составляющей. friction все таки отнимается от speed, а hspeed и vspeed рассчитываются уже по измененной speed.