はじめる! Box2DJS 第4章 世界を操作する

あっというまに1週間間があいてしまいました。今日はユーザの操作などで物体に力を加えたりする方法についてです。

  • 物体の位置を移動する
    • b2Body.SetOriginPosition()
      • b2BodyDef の基準点を移動する
    • b2Body.SetCenterPosition()
      • 物体の重心を移動する
  • 物体の速度、角速度を直接指定する
    • b2Body.SetLinearVelocity()
      • 速度を 2次元のベクトルで指定
    • b2Body.SetAngularVelocity()
      • 角速度をスカラ量で指定
    • 速度、角速度を明示的に与えた場合 WakeUp() で物体が動くことを伝える必要がある(一旦静止した物体は相互作用するまで再計算されない場合があるので)
  • 物体に力を加える
    • b2Body.ApplyForce
      • 加える力のベクトルと、加える位置のベクトルを指定
  • 物体にトルク(回転運動する力を加える)
    • b2Body.ApplyTorque()
  • 物体に衝撃を加える
    • 衝撃を加えるのど力を加えるのとは即座に速度に反映されるかどうかが違うらしい……物理的には力を加える時間が異なると解釈すればいいのでしょうか
    • b2Body.ApplyImpulse()
  • ジョイントから力を加える
    • 回転ジョイントには連結している物体に回転する力もしくは回転を止めようとする力を加えることができる
      • enableMortor を true にして mortorSpeed で回転速度、mortorTorque でトルクを指定
      • mortorSpeed を 0 にした時は mortorTorque の力で回転を止める方向にトルクがかかる
    • 直動ジョイントには連結している物体にジョイントにそって直線的に力を加えることができる
    • enableMortor を true にして mortorSpeed と mortorForce で同様に指定
    • enableLimit を true にして可動域を指定することでジョイントの動く(力の加わる)範囲を指定することも可能