Re: DXライブラリのDirectInputを更新して欲しいです ( No.1 ) |
- 名前:管理人 日時:2014/11/08 23:48
精度の違いは DirectInput7 と DirectInput8 の違いではなく、方向入力の無効範囲の違いからくるものだと思います
恐らく DxLib_Init の実行後の箇所に以下の記述を追加すれば joyGetPosEx と同じ挙動になると思います
SetJoypadDeadZone( DX_INPUT_PAD1, 0.0 ) ;
DirectInput には入力の無効範囲を設定することができ、DXライブラリでは初期状態で無効範囲を 35% としています
つまり方向入力用のスティックを 35% 以上傾けないと傾きが 0% として判定されるようになっています
( 2Dのゲームでは無効範囲が無いとスティックを少し傾けただけで入力されたことになってしまい
逆に操作感が悪くなってしまうので、初期状態で無効範囲を 35% に設定しています )
この無効範囲を 0% にすることでkiaiさんのテストで発生していた joyGetPosEx との差異が無くなると思いますので、
よろしければお試しください m(_ _)m
あと、関数リファレンスに SetJoypadDeadZone が無かったので追加しました、関数の宣言などはこちらをご参照ください
http://homepage2.nifty.com/natupaji/DxLib/function/dxfunc_input.html#R5N37
> DXライブラリのProcessMessageが他のDirectXを使用したソフトに反応してソフトを終了させてしまう事があります。
こちらの現象は確認したことがありません、よろしければその現象が発生する DirectX のソフトを教えて頂けないでしょうか?
|
Re: DXライブラリのDirectInputを更新して欲しいです ( No.2 ) |
- 名前:kiai 日時:2014/11/09 00:58
返答ありがとうございます。無効範囲の設定があったんですね。無事に動作しました!重ねてありがとうございます。
AnotherBoundNeoというFPSゲームがフリーソフトであるのですが、こちらでソフトが終了してしまうことを今確認しました。
DXライブラリで作ったソフトを起動しておいて、さらにゲームを起動させるとソフトが終了してしまいます。
以下がそのコードです。書いていて気がついたのですが、SetGraphModeをコメントアウトすると問題なく動いたので、SetGraphModeが原因かと思います。
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
SetGraphMode(500, 500, 32);
ChangeWindowMode(TRUE);
if (DxLib_Init() == -1)
{
return -1;
}
SetDrawScreen(DX_SCREEN_BACK);
while (!ProcessMessage()){
DrawString(0,0,"test comment",GetColor(255,255,255));
ScreenFlip();
}
DxLib_End();
return 0;
}
|
Re: DXライブラリのDirectInputを更新して欲しいです ( No.3 ) |
- 名前:管理人 日時:2014/11/09 10:36
現象が発生するソフトのご紹介ありがとうございます
ただ、手元の環境でこちらのソフトを起動しようとしたところ
「このパソコンにはMS ゴシックがインストールされていません。
ゲームを起動することができません。」
と表示され起動することができませんでした。
少し調べてみてもこのエラーの対処法は見つからず・・・
すみません、こちらのソフト以外で同様の現象が発生するソフトを教えて頂けないでしょうか? m(_ _;m
|
Re: DXライブラリのDirectInputを更新して欲しいです ( No.4 ) |
- 名前:kiai 日時:2014/11/09 13:11
DXライブラリ同士でも発生するみたいです。
>>2のコードの後に以下コードを実行すると再現出来ました。
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
SetMainWindowText("test");
if (DxLib_Init() == -1)
{
return -1;
}
WaitKey();
DxLib_End();
return 0;
}
|
Re: DXライブラリのDirectInputを更新して欲しいです ( No.5 ) |
- 名前:管理人 日時:2014/11/10 03:02
再現コードを作成して頂きありがとうございます
こちらのプログラムを起動すると No.2 のプログラムが終了する現象ですが、仕様となります
DXライブラリではソフトの起動中に他のソフトによって画面モードが変更されると
自動的にプログラムが終了するようになっています
|
Re: DXライブラリのDirectInputを更新して欲しいです ( No.6 ) |
- 名前:kiai(解決) 日時:2014/11/10 08:17
仕様でしたか。今まで通りSetWindowUserCloseEnableFlagで回避することにします。
丁寧な対応をありがとうございました。
|