用Direct3D设计二维横版过关动作类游戏的角色运动
演示程序下载地址:http://download.csdn.net/detail/jiangcaiyang123/4278008
if ( KeyDown( 左 ) )
{
if ( 碰撞检测 == 没有碰撞 && 边界检测 == 没有越过边界 )
{
Player->GoLeft( );
}
}
if ( KeyDown( 右 ) )
{
if ( 碰撞检测 == 没有碰撞 && 边界检测 == 没有越过边界 )
{
Player->GoRight( );
}
}
←bLock = false; // 初始化的时候赋值为假 ←speed = 单倍速; ←lastKeyDownTime = 0; if ( KeyDown( 左 ) ) { if ( 碰撞检测 == 没有碰撞 && 边界检测 == 没有越过边界 ) { if ( !bLock ) { if ( std::clock( ) - lastKeyDownTime < 500 ) { speed = 双倍速; } else { speed = 单倍速; } lastKeyDownTime = std::clock( ); bLock = true; } Player->GoLeft( speed ); } } if ( KeyUp( 左 ) ) { bLock = false; } if ( KeyDown( 右 ) ) { …………与上面类似 } if ( KeyUp( 左 ) ) { …………与上面类似 }
←bLock = false; // 跳跃锁 ←jumpHeight = 0; // 跳跃的高度 if ( KeyUp( C键 ) ) { bLock = true; jumpHeight = 三个地图块的高度 } if ( KeyDown( C键 ) ) { if ( 向上碰撞检测 == 没有碰撞 && 边界检测 == 没有超过边界 ) { bLock = false; 将jumpHeight递减,Y递增 if ( jumpHeight == 0 ) { Fall( ); // 执行下落函数 } } else { bLock = true; jumpHeight = 三个地图块的高度 Fall( ); // 执行下落函数 } } 这里Fall( )函数的定义是这样的: void Fall( void ) { if ( 没有检测到与下面砖块的碰撞 ) { Y递减 } }
←bLock = false; // 跳跃锁 ←jumpHeight = 0; // 跳跃的高度 jumpTime = 2; // 二段跳 if ( KeyUp( C键 ) ) { bLock = true; jumpHeight = 三个地图块的高度 if ( jumpTime == 2 ) jumpTime = 0; // ※待会儿会解释 Fall( ); // 执行下落函数 } if ( KeyDown( C键 ) ) { if ( 向上碰撞检测 == 没有碰撞 && 边界检测 == 没有超过边界 ) { bLock = false; if ( jumpTime > 0 ) // 还可以跳跃 { 将jumpHeight递减,Y递增 if ( jumpHeight == 0 ) { Fall( ); // 执行下落函数 } } else { Fall( ); // 执行下落函数 } } else { bLock = true; jumpHeight = 三个地图块的高度 if ( jumpTime == 2 ) jumpTime = 0; // ※待会儿会解释 Fall( ); // 执行下落函数 } }
我制作的游戏演示程序也一并展示出来,这里恳请高手给出点评。
演示程序下载地址:http://download.csdn.net/detail/jiangcaiyang123/4278008