戦略シミュレーションゲームで移動
Posted: 2014年1月18日(土) 13:02
戦略シミュレーションゲームでユニット移動をさせることが出きませんコードは↓
ですみなさん教えてください
略
// 入力情報を一つ前のフレームの入力に代入する
BackInput = NowInput ;
if(unn=1){
// 現在の入力を取得する
NowInput = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ;
// 現在のフレームで初めて押されたボタンを算出する
EdgeInput = NowInput & ~BackInput ;
// 上が押されたら向いている方向に移動する
if( CheckHitKey ( KEY_INPUT_UP ) == 1 )
{Muki = 0 ;
// 向きによって移動方向が変わる
switch( Muki )
{
case 0 : movx = -1 ; movz = 0 ; break ; // X軸プラス方向
case 1 : movx = 0 ; movz = 1 ; break ; // Z軸マイナス方向
case 2 : movx = 1 ; movz = 0 ; break ; // X軸マイナス方向
case 3 : movx = 0 ; movz = -1 ; break ; // Z軸プラス方向
}
// 移動先のマスが道だったら移動する
if( Map[ z + movz ][ x + movx ] == 1 )
{
x += movx ;
z += movz ;
}
}
// 下が押されたら向いている方向と逆方向に移動する
if( CheckHitKey ( KEY_INPUT_DOWN ) == 1 )
{Muki = 0 ;
// 向きによって移動方向が変わる
switch( Muki )
{
case 0 : movx = 1 ; movz = 0 ; break ; // X軸プラス方向
case 1 : movx = 0 ; movz = -1 ; break ; // Z軸マイナス方向
case 2 : movx = -1 ; movz = 0 ; break ; // X軸マイナス方向
case 3 : movx = 0 ; movz = 1 ; break ; // Z軸プラス方向
}
// 移動先のマスが道だったら移動する
if( Map[ z + movz ][ x + movx ] == 1 )
{
x += movx ;
z += movz ;
}
}
// 左が押されていたら向いている方向を左に90度変更する
if( CheckHitKey ( KEY_INPUT_RIGHT ) == 1 )
{
Muki = 1;
// 向きによって移動方向が変わる
switch( Muki )
{
case 0 : movx = -1 ; movz = 0 ; break ; // X軸プラス方向
case 1 : movx = 0 ; movz = 1 ; break ; // Z軸マイナス方向
case 2 : movx = 1 ; movz = 0 ; break ; // X軸マイナス方向
case 3 : movx = 0 ; movz = -1 ; break ; // Z軸プラス方向
}
// 移動先のマスが道だったら移動する
if( Map[ z + movz ][ x + movx ] == 1 )
{
x += movx ;
z += movz ;
}
}
if( CheckHitKey ( KEY_INPUT_Z ) == 1 )
{
}
// 右が押されていたら向いている方向を右に90度変更する
if( CheckHitKey(KEY_INPUT_LEFT ) == 1 )
{
Muki = 3 ;
// 向きによって移動方向が変わる
switch( Muki )
{
case 0 : movx = 1 ; movz = 0 ; break ; // X軸プラス方向
case 1 : movx = 0 ; movz = 1 ; break ; // Z軸マイナス方向
case 2 : movx = -1 ; movz = 0 ; break ; // X軸マイナス方向
case 3 : movx = 0 ; movz = -1 ; break ; // Z軸プラス方向
}
// 移動先のマスが道だったら移動する
if( Map[ z + movz ][ x + movx ] == 1 )
{
x += movx ;
z += movz ;
}
}
}
// マップを描画する
for( i = 0 ; i < MAP_Z ; i ++ )
{
for( j = 0 ; j < MAP_X ; j ++ )
{
// 道ではないところは描画しない
if( Map[ i ][ j ] == 0 ) continue ;
// マップを描画する
for( i2 = 0 ; i2 < MAP_Z2 ; i2 ++ )
{
for( j2 = 0 ; j2 < MAP_X2 ; j2 ++ )
{
// 道ではないところは描画しない
if( Map2[ i2 ][ j2 ] == 0 ) continue ;
for( i3 = 0 ; i3 < MAP_Z3 ; i3 ++ )
{
for( j3 = 0 ; j3 < MAP_X3 ; j3 ++ )
{
// 道ではないところは描画しない
if( Map3[ i3 ][ j3 ] == 0 ) continue ;
MV1SetPosition( chara, VGet( j3 * BLOCK_SIZE, 0.0f, i3 * BLOCK_SIZE ) ) ;
// 壁モデルの座標を変更する
MV1SetPosition( KabeModel, VGet( j * BLOCK_SIZE, 0.0f, i * BLOCK_SIZE ) ) ;
// 壁モデルの座標を変更する
MV1SetPosition( Model01, VGet( j2 * BLOCK_SIZE, 0.0f, i2 * BLOCK_SIZE ) ) ;
// 割り出した番号のフレームを描画する
MV1DrawFrame( Model01, FrameNo ) ;
// 割り出した番号のフレームを描画する
MV1DrawFrame( KabeModel, FrameNo ) ;
// 割り出した番号のフレームを描画する
MV1DrawFrame( chara, FrameNo ) ;
// 割り出した番号のフレームを描画する
MV1DrawFrame( Model, FrameNo ) ;
if( Map3[ z + movz ][ x + movx ] == 1 )
{
}
}
}
}
}
}
}
//第一引数の視点から第二引数のターゲットを見る角度にカメラを設置
SetCameraPositionAndTarget_UpVecY( VGet( x * BLOCK_SIZE+1080, CAMERA_Y, z * BLOCK_SIZE+1080 ), VGet( x * BLOCK_SIZE, 0, z * BLOCK_SIZE ) ) ;
// 指定位置にモデルを配置
MV1SetPosition( Model, VGet( x * BLOCK_SIZE, 0, z * BLOCK_SIZE ) ) ;