#1
by cupa » 7ヶ月前
四方向だけの移動にしたいです。
コード:
void Player::move()
{
int k[ 4 ] = { KEY_INPUT_RIGHT, KEY_INPUT_LEFT, KEY_INPUT_UP, KEY_INPUT_DOWN };
bool sayu = false, joge = false;
float moveX[ 4 ] = { mSpd, -mSpd, 0, 0, };
float moveY[ 4 ] = { 0, 0, -mSpd, mSpd };
for( int i = 0; i < 2; i++ ){
if( key.getPressingKey( k[ i ] ) > 0 ){
sayu = true;
}
}
for( int i = 2; i < 4; i++ ){
if( key.getPressingKey( k[ i ] ) > 0 ){
joge = true;
}
}
for( int i = 0; i < 4; i++ ){
if( !sayu || !joge ){
if( key.getPressingKey( k[ i ] ) > 0 ){
mX += moveX[ i ];
mY += moveY[ i ];
}
}
}
}
こうするの斜め入力はできなくなるのですが、「上下」と「左右」を同時押しした時に止まってしまいます。
そうではなく、「右を押していて下を押したら下に移動する」ようにしたいのですがどうすればいいでしょうか?
四方向だけの移動にしたいです。
[code]
void Player::move()
{
int k[ 4 ] = { KEY_INPUT_RIGHT, KEY_INPUT_LEFT, KEY_INPUT_UP, KEY_INPUT_DOWN };
bool sayu = false, joge = false;
float moveX[ 4 ] = { mSpd, -mSpd, 0, 0, };
float moveY[ 4 ] = { 0, 0, -mSpd, mSpd };
for( int i = 0; i < 2; i++ ){
if( key.getPressingKey( k[ i ] ) > 0 ){
sayu = true;
}
}
for( int i = 2; i < 4; i++ ){
if( key.getPressingKey( k[ i ] ) > 0 ){
joge = true;
}
}
for( int i = 0; i < 4; i++ ){
if( !sayu || !joge ){
if( key.getPressingKey( k[ i ] ) > 0 ){
mX += moveX[ i ];
mY += moveY[ i ];
}
}
}
}
[/code]
こうするの斜め入力はできなくなるのですが、「上下」と「左右」を同時押しした時に止まってしまいます。
そうではなく、「右を押していて下を押したら下に移動する」ようにしたいのですがどうすればいいでしょうか?