ForceFeedBack
MSDNのDirectInput(unmanaged)参考に、
ForceFeedBackのコード書いてみたけど、
EffectObjectのコンストラクタで例外でちゃうよ。
ステップ1と2は、前回のコードに含まれてるゲームパッドデバイス取得とかのあたりなので省略。
例外でるのはいいんだけど、どこがおかしいのかもっと詳しく教えてほしいです(´・ω・`)
むしろ、MSDNのmanagedのサンプルコード載せてください。。
//===============================================
#region ステップ3
// 規定値取得
//ForceFeedbackGuid.Triangle;
// EffectGuid 列挙して取得
//foreach (EffectInformation effectInformation in game_diDevice.GetEffects(EffectType.Periodic))
//{
// Guid effectGuid = effectInformation.EffectGuid;
//}
#endregion
#region ステップ4
DirectInput.Periodic diPeriodic = new Periodic();
diPeriodic.Magnitude = (Int32)DI.NominalMax;
diPeriodic.Offset = 0;
diPeriodic.Phase = 0;
diPeriodic.Period = (Int32)(0.05 * (Int32)DI.Seconds);
DirectInput.Envelope diEnvelope = new Envelope();
diEnvelope.AttackLevel = 0;
diEnvelope.AttackTime = (Int32)(0.5 * (Int32)DI.Seconds);
diEnvelope.FadeLevel = 0;
diEnvelope.FadeTime = (Int32)(1.0 * (Int32)DI.Seconds);
DirectInput.Effect diEffect = new Effect();
diEffect.Flags = EffectFlags.Polar | EffectFlags.ObjectOffsets;
diEffect.Duration = (Int32)(2.0 * (Int32)DI.Seconds);
diEffect.SamplePeriod = 0;
diEffect.Gain = (Int32)DI.NominalMax;
diEffect.TriggerButton = 0;
diEffect.TriggerRepeatInterval = 0;
JoystickState diJoystickState = new JoystickState();
Int32[] axes = { diJoystickState.X, diJoystickState.Y };
Int32[] direction = { 0, 0 };
diEffect.SetAxes(axes);
diEffect.SetDirection(direction);
diEffect.EnvelopeStruct = diEnvelope;
diEffect.Periodic = diPeriodic;
DirectInput.EffectObject diEffectObject = new EffectObject(ForceFeedbackGuid.Triangle, diEffect, game_diDevice);
// 値が有効な範囲じゃないエラーがでる
//DirectInput.EffectObject diEffectObject = new EffectObject(ForceFeedbackGuid.Triangle, game_diDevice);
// これは通るけど、どうやってブルブルさせるんだろ?
#endregion
//===============================================
ForceFeedBackのコード書いてみたけど、
EffectObjectのコンストラクタで例外でちゃうよ。
ステップ1と2は、前回のコードに含まれてるゲームパッドデバイス取得とかのあたりなので省略。
例外でるのはいいんだけど、どこがおかしいのかもっと詳しく教えてほしいです(´・ω・`)
むしろ、MSDNのmanagedのサンプルコード載せてください。。
//===============================================
#region ステップ3
// 規定値取得
//ForceFeedbackGuid.Triangle;
// EffectGuid 列挙して取得
//foreach (EffectInformation effectInformation in game_diDevice.GetEffects(EffectType.Periodic))
//{
// Guid effectGuid = effectInformation.EffectGuid;
//}
#endregion
#region ステップ4
DirectInput.Periodic diPeriodic = new Periodic();
diPeriodic.Magnitude = (Int32)DI.NominalMax;
diPeriodic.Offset = 0;
diPeriodic.Phase = 0;
diPeriodic.Period = (Int32)(0.05 * (Int32)DI.Seconds);
DirectInput.Envelope diEnvelope = new Envelope();
diEnvelope.AttackLevel = 0;
diEnvelope.AttackTime = (Int32)(0.5 * (Int32)DI.Seconds);
diEnvelope.FadeLevel = 0;
diEnvelope.FadeTime = (Int32)(1.0 * (Int32)DI.Seconds);
DirectInput.Effect diEffect = new Effect();
diEffect.Flags = EffectFlags.Polar | EffectFlags.ObjectOffsets;
diEffect.Duration = (Int32)(2.0 * (Int32)DI.Seconds);
diEffect.SamplePeriod = 0;
diEffect.Gain = (Int32)DI.NominalMax;
diEffect.TriggerButton = 0;
diEffect.TriggerRepeatInterval = 0;
JoystickState diJoystickState = new JoystickState();
Int32[] axes = { diJoystickState.X, diJoystickState.Y };
Int32[] direction = { 0, 0 };
diEffect.SetAxes(axes);
diEffect.SetDirection(direction);
diEffect.EnvelopeStruct = diEnvelope;
diEffect.Periodic = diPeriodic;
DirectInput.EffectObject diEffectObject = new EffectObject(ForceFeedbackGuid.Triangle, diEffect, game_diDevice);
// 値が有効な範囲じゃないエラーがでる
//DirectInput.EffectObject diEffectObject = new EffectObject(ForceFeedbackGuid.Triangle, game_diDevice);
// これは通るけど、どうやってブルブルさせるんだろ?
#endregion
//===============================================
トラックバック(0)
このブログ記事を参照しているブログ一覧: ForceFeedBack
このブログ記事に対するトラックバックURL: http://www.lirim.net/mt/mt-tb.cgi/8
2008/01/22以前のコンテンツは2008/01/22以前のアーカイブのページで見られます。

コメントする