Platform SDK: DirectX |
ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「DirectInput C/C++ チュートリアル」を参照すること。
アプリケーションで、ジョイスティックに制御される移動可能オブジェクト (たとえば、鉄球) に対して静止オブジェクト (たとえば、磁石) が引き付ける力をシミュレートすることを考えてみよう。このシミュレーションの最初に、鉄球は磁石の真南にあり、引く最大距離の半分の位置にある。
コンスタント フォースにより磁石の引き付ける力をシミュレートする。まず、このフォースを表す DIEFFECT 型を設定する。
Dim EffectInfo as DIEFFECT With EffectInfo .constantForce.lMagnitude = 5000 .lDuration = -1 ' 無限。 .x = 18000 .lGain = 10000 ' 全マグニチュードで再生する。 .lTriggerButton = -1 ' トリガ ボタンなし。 End With
DIEFFECT のほかのすべてのメンバは、コンスタント フォースに無関係であるか、またはゼロとして有効である。
次にエフェクトを生成する。
Dim di_effect As DirectInputEffect Set di_effect = didev.CreateEffect("GUID_ConstantForce", EffectInfo)
このときにデバイスが取得状態にあれば、エフェクトが自動的にダウンロードされる。取得状態になければ、エフェクトは開始時にダウンロードされる。
di_effect.Start(1, 0)
このエフェクトは無限の継続時間を持っているので、エフェクトを一度だけ繰り返す場合、フラグは不要である。
次項 : ステップ 4 : エフェクトの変更