Platform SDK: DirectX

ステップ 3 : エフェクトの生成

[C++]

ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「DirectInput C/C++ チュートリアル」を参照すること。

[Visual Basic]

アプリケーションで、ジョイスティックに制御される移動可能オブジェクト (たとえば、鉄球) に対して静止オブジェクト (たとえば、磁石) が引き付ける力をシミュレートすることを考えてみよう。このシミュレーションの最初に、鉄球は磁石の真南にあり、引く最大距離の半分の位置にある。

コンスタント フォースにより磁石の引き付ける力をシミュレートする。まず、このフォースを表す 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 : エフェクトの変更