フォースフィードバック

コントローラのフォースフィードバック機能の使い方です。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. XBOX 360 のコントローラには、フォースフィードバック機能が備わっています。
    左右の小型モータを使ってコントローラを振動させる機能です。
  2. left_mortor, right_mortor は、左右のモータの振動値を「0.0f〜1.0f」の範囲で設定します。
    0.0f が設定されると振動が停止します。
        public class Game1 : Microsoft.Xna.Framework.Game
        {
            GraphicsDeviceManager graphics;
            float left_mortor = 0.0f;       //左モータの値
            float right_mortor = 0.0f;      //右モータの値
        
  3. Update() で Back ボタンと Escape キーを検出してプログラムを終了します。
    this.Exit(); を実行する前に、振動を停止して下さい。
    左右のトリガ情報(0.0f〜1.0f)を取得して、left_mortor と right_mortor に格納します。
    GamePad.SetVibration() が振動を設定する関数です。
    トリガ・ボタンを強くにぎると、振動が段々強くなります。
    left_mortor と right_mortor の値を Title Bar に表示しています。
            protected override void Update(GameTime gameTime)
            {
                // ゲームを終了する
                if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed  ||
                    Keyboard.GetState().IsKeyDown(Keys.Escape))
                {   GamePad.SetVibration(PlayerIndex.One,0,0);
                    this.Exit();
                }
                // TODO: Add your update logic here
                GamePadState currentState = GamePad.GetState(PlayerIndex.One); 
                if (currentState.IsConnected) 
                { 
                    left_mortor = currentState.Triggers.Left;
                    right_mortor = currentState.Triggers.Right;
                    GamePad.SetVibration(PlayerIndex.One, left_mortor, right_mortor);
                    string wstr;
                    wstr = "Left=" + left_mortor + "  Right=" + right_mortor;
                    base.Window.Title = wstr;
                }
    
                base.Update(gameTime);
            }
        
  4. Draw() メソッドでは画面をクリアするだけです。
    プログラムを完成させて、左右のモータの違いを確認して下さい。
    フォースフィードバック機能を効果的に使うには、時間の経過と共に振動の大きさを変えるなどの工夫が必要です。

前田稔(Maeda Minoru)の超初心者のプログラム入門

超初心者のプログラム入門(XNA(C#) game program)