ページ 1 / 1
ゲームパッド対応させたいです。
Posted: 2011年6月16日(木) 21:44
by G.G.
ゲームパッドを対応させたいので、竜神禄のコードを参考にしてみたのですが、
上手くいかないみたいで、正しいコードを教えて欲しいです。
あと、作っているゲームは対戦主体のゲームなんで、
パッド1、キーボードは1P、パッド2以降は2P~という風にする予定です。
添付したプロジェクトは新ゲームプログラムのサンプルをいじったものです。
Re: ゲームパッド対応させたいです。
Posted: 2011年6月16日(木) 21:52
by みけCAT
とりあえず
コード:
void GetHitPadStateAll(Player_t *Player){
int KEY[4];
KEY[0]=KEY_INPUT_LEFT;KEY[1]=KEY_INPUT_UP;
KEY[2]=KEY_INPUT_RIGHT;KEY[3]=KEY_INPUT_DOWN;
int i,PadInput,mul=0;
PadInput=GetJoypadInputState(DX_INPUT_PAD1);
for(i=0;i<4;i++){
if(PadInput&mul) Player->key[i]++;
else Player->key[i]=0;
mul*=2;
}
for(int n=0;n<4;n++){
input_pad_or_key(&Player->key[Player->configpad[n]],Keyboard_Get(KEY[n]));
}
}
このコードで、変数mulがいつまでたっても0のままなのが問題だと思います。
追記
「正しいコード」はこんな感じでしょうか?適当です。
コード:
void GetHitPadStateAll(Player_t *Player){
int KEY[4];
KEY[0]=KEY_INPUT_LEFT;KEY[1]=KEY_INPUT_UP;
KEY[2]=KEY_INPUT_RIGHT;KEY[3]=KEY_INPUT_DOWN;
int i,PadInput;
PadInput=GetJoypadInputState(DX_INPUT_PAD1);
for(i=0;i<4;i++){
if(PadInput&(1<<i)) Player->key[i]++;
else Player->key[i]=0;
}
for(int n=0;n<4;n++){
input_pad_or_key(&Player->key[Player->configpad[n]],Keyboard_Get(KEY[n]));
}
}
Re: ゲームパッド対応させたいです。
Posted: 2011年6月16日(木) 21:54
by G.G.
試してみます
Re: ゲームパッド対応させたいです。
Posted: 2011年6月16日(木) 21:56
by G.G.
エラーでした・・・
Re: ゲームパッド対応させたいです。
Posted: 2011年6月16日(木) 21:58
by みけCAT
エラーメッセージは何ですか?
Re: ゲームパッド対応させたいです。
Posted: 2011年6月16日(木) 22:03
by G.G.
コード:
1>------ ビルド開始: プロジェクト: GameProg, 構成: Debug Win32 ------
1> Padconfig.cpp
1>test.obj : error LNK2019: 未解決の外部シンボル "void __cdecl Player_Calc(struct Player_t *)" (?Player_Calc@@YAXPAUPlayer_t@@@Z) が関数 _WinMain@16 で参照されました。
1>D:\ME\GameProg\Debug\GameProg.exe : fatal error LNK1120: 外部参照 1 が未解決です。
========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========
こんな感じです。
Re: ゲームパッド対応させたいです。
Posted: 2011年6月16日(木) 22:03
by みけCAT
Player.cpp内の
コード:
// 動きを計算する
void Player_Calc(Player_t *Player,int i){
if (i == 1){
if( CheckStatePad_Player1( Player->configpad[3],Player ) > 0 ){
Player->y-=3;
}
if( Keyboard_Get( KEY_INPUT_DOWN ) > 0 ){
Player->y+=3;
}
if( Keyboard_Get( KEY_INPUT_LEFT ) > 0 ){
Player->x-=3;
}
if( Keyboard_Get( KEY_INPUT_RIGHT ) > 0 ){
Player->x+=3;
}
}
}
を
コード:
// 動きを計算する
void Player_Calc(Player_t *Player){
if (i == 1){
if( CheckStatePad_Player1( Player->configpad[3],Player ) > 0 ){
Player->y-=3;
}
if( Keyboard_Get( KEY_INPUT_DOWN ) > 0 ){
Player->y+=3;
}
if( Keyboard_Get( KEY_INPUT_LEFT ) > 0 ){
Player->x-=3;
}
if( Keyboard_Get( KEY_INPUT_RIGHT ) > 0 ){
Player->x+=3;
}
}
}
にしたらどうですか?
Re: ゲームパッド対応させたいです。
Posted: 2011年6月16日(木) 22:07
by G.G.
すみません、
int i が邪魔だったみたいです。
でも実行はできましたが、上方向に移動しませんでした・・・
Re: ゲームパッド対応させたいです。
Posted: 2011年6月16日(木) 22:24
by G.G.
とりあえず、今までの結果のプロジェクトです。
Re: ゲームパッド対応させたいです。
Posted: 2011年6月16日(木) 23:20
by 白い時空
見てて気づいたのですが
コード:
PadInput=GetJoypadInputState(DX_INPUT_PAD1);
GetJoypadInputStateの引数がDX_INPUT_PAD1で固定になってます。
パッド1の情報を取得する場合はDX_INPUT_PAD1、
パッド2の情報を取得する場合はDX_INPUT_PAD2、
のように変えるべきかと。
Re: ゲームパッド対応させたいです。
Posted: 2011年6月17日(金) 23:43
by G.G.
>白い時空さん
とりあえずパッド対応のテストだったんで、パッド1のみでやっていました。
とりあえず解決次第、引数を変更できるようにして、
次にあるinput_pad_or_keyの部分はパッド2以降は使えないようにしておきます。