Krib
|
 |
« : Ноябрь 30, 2011, 19:28:48 » |
|
Есть ли тут подобие функции friction или придется самому додумывать?
|
|
|
Записан
|
Fuge, late, tace
|
|
|
|
Krib
|
 |
« Ответ #2 : Ноябрь 30, 2011, 19:41:20 » |
|
Так-то так, но она в ГМ очень удобно сделана, к примеру скорость 0.5, трение 1, скорость станет 0, аналогично для отрицательных. Так же думаю это будет быстрее работать, чем прописанные проверки... так как идеального кода для этого не знаю  Ответ в виде кода тоже устроит ;D Добавлено: Ноябрь 30, 2011, 20:05:28 Мой вариант: if(abs(speed)<friction){speed=0;} else{if(speed<0){speed=speed+friction;}else{speed=speed-friction;}} Есть варианты лучше? Попутный вопрос в тулулу работают такие присваивания: += -=?
|
|
|
Записан
|
Fuge, late, tace
|
|
|
Dva_Kota
|
 |
« Ответ #3 : Ноябрь 30, 2011, 20:24:02 » |
|
+= и -= работают
|
|
|
Записан
|
|
|
|
Dmi7ry
Гл. Администратор
Репутация: 1379
Offline
Пол:  Награды:  ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](https://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+1000 репутации] За лояльность! [+1000 репутации]](https://forum.hellroom.ru/awards/49d1e615667c15086498002286ccd3e9_hellroomforum_good_gold.gif)   
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626
|
 |
« Ответ #4 : Ноябрь 30, 2011, 20:41:57 » |
|
Есть варианты лучше? первое, что приходит в голову: speed-=sign(speed)*friction
|
|
|
Записан
|
- А какой, собственно, командой процессора колобок ест черта? - Командой EAT... |  | Справка и FAQ в правом верхнем углу... |  |
|
|
|
Fantom
I am... All of me
Гл. Администратор
Репутация: 1325
Offline
Пол:  Награды:  ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](https://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![За лояльность! [+1000 репутации] За лояльность! [+1000 репутации]](https://forum.hellroom.ru/awards/49d1e615667c15086498002286ccd3e9_hellroomforum_good_gold.gif)   ...
API: GameMaker Studio Master
Сообщений: 5026
|
 |
« Ответ #5 : Ноябрь 30, 2011, 20:45:12 » |
|
if abs(speed)>0 //можно и без проверки speed=sign(speed)*max(0,abs(speed)-friction); За отсутствие каких-то функций не отвечаю. Отсутствует sign. Ее можно заменить на speed/abs(speed), но тогда проверка выше будет обязательной. PS: friction - переменная.
|
|
|
Записан
|
|
|
|
Krib
|
 |
« Ответ #6 : Ноябрь 30, 2011, 20:45:27 » |
|
Точно, спасибо, но первую проверку все же придется оставить (if(abs(speed)<friction){speed=0;})? Добавлено: Ноябрь 30, 2011, 20:47:46 FanTom, то что надо, спасибо, сигна тут есть и max тоже 
|
|
|
Записан
|
Fuge, late, tace
|
|
|
Dmi7ry
Гл. Администратор
Репутация: 1379
Offline
Пол:  Награды:  ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](https://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+1000 репутации] За лояльность! [+1000 репутации]](https://forum.hellroom.ru/awards/49d1e615667c15086498002286ccd3e9_hellroomforum_good_gold.gif)   
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626
|
 |
« Ответ #7 : Ноябрь 30, 2011, 20:51:05 » |
|
Точно, спасибо, но первую проверку все же придется оставить(if(abs(speed)<friction){speed=0;})? да, конечно.
|
|
|
Записан
|
- А какой, собственно, командой процессора колобок ест черта? - Командой EAT... |  | Справка и FAQ в правом верхнем углу... |  |
|
|
|
Krib
|
 |
« Ответ #8 : Ноябрь 30, 2011, 20:56:19 » |
|
Теперь вот думаю, какой код более ресурсоемок, в плане оптимизации я не очень разбираюсь... speed=sign(speed)*max(0,abs(speed)-friction); тут операция max(if(abs(speed)<friction){speed=0;}else{speed-=sign(speed)*friction;} а тут одно полное условие
|
|
|
Записан
|
Fuge, late, tace
|
|
|
|
YellowAfterlife
Videogames, I'm afraid
Главный Модератор
Репутация: 440
Offline
Пол:  Награды:   ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](https://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+300 репутации] За лояльность! [+300 репутации]](https://forum.hellroom.ru/awards/8ff7443ce508760cfbf715910b3eb0b3_hellroomforum_good_copper.gif)  ...
API: GameMaker Studio 2
Сообщений: 731
|
 |
« Ответ #10 : Ноябрь 30, 2011, 21:23:49 » |
|
Расширение Motion специально содержит функцию motion_slow(friction) для имитации переменной friction.
|
|
|
Записан
|
|
|
|
|