hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。 |
車がブレーキを踏むと止まるあの現象です。
物の表面と表面がこすれたときに生まれます。
摩擦にはおもに2種類あります。
とまあ、ありますが、動摩擦だけ押さえてればかなりそれっぽい動きをしてくれるので、
静止摩擦は気にしなくてもいいでしょう。
え、転がり摩擦ですか?これについては知識不足なんでそのうち調べたら書きます。たぶん
動摩擦とあんま変わんないと思います。小さくなるだけってだけで。たぶんですが…。
さて、どうでもいい前置きは終わりです。
んでは、毎度おなじみ超アバウトな動き方の法則解説です。
<法則>
モジュール:mp001.as
+ | 動摩擦サンプル |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | - | | | | | | ! - | | | | ! |
|
平方根モジュールはさくらさんとこのHSP Tipsを参考にさせていただきました。m(_ _)mども
摩擦を表現した部分だけ抜き出しました。
水平な地面の上にある物体を想定して作っています。
;地面との摩擦 if py>=400 { if vx<0 : hvx =-1 if vx>0 : hvx = 1 if vx=0 : hvx = 0 ax -= hvx*mu*ay if (vx<0)&(vx+ax>0) : ax = -vx if (vx>0)&(vx+ax<0) : ax = -vx }
ということで式はこうなります。
ax -= hvx*mu*ay
このあとさらに、マイナスしすぎて反対方向に移動してしまわないように摩擦抵抗に上限値を設定します。
if (vx<0)&(vx+ax>0) : ax = -vx if (vx>0)&(vx+ax<0) : ax = -vx
垂直抗力Nの物体に働く摩擦力は
F = μ * N
です。
垂直抗力Nと言うのは、地面から垂直方向に物体が受けている力。今回の場合重力意外に働く力がないので
N = m * g
になります。で、運動方程式がF=maだから…
F = μ * N = μ * m * g = m * a μ * g = a
としてこのときの加速度が出ます。
この加速度は進行方向と反対方向に進むので、元の値から引いてやります。