キャラクターを動かしたいんですが・・・
Posted: 2010年5月23日(日) 18:50
現在、シューティングゲームを作っているところなのですが、
(といっても、ブロックが動いたり、上から降ってくるようなものです)
左右にキャラクターは動かせても、前後にキャラクターを動かすことができません。
どうやったら、動かせますか?教えてください。
↓が実際に打ってみたプログラムです。
間違っているところがあったら、教えてください。
// メイン関数
void main(void)
{
// ここで初期化します
// プレイヤの座標
float playerX = 0.0f;
float playerY = 0.0f;
// プレイヤの移動速度
float playerVX = 0.0f;
float playerVY = 0.0f;
// プレイヤの速さ
float playerSpeed = 0.5f;
// プレイヤの移動範囲
float playerXMin = -19.0f;
float playerXMax = 18.0f;
float playerYMin = -14.0f;
float playerYMax = 13.0f;
// ゲームループ
// Windowが閉じたら、繰り返しを終了します。
while( IsActive() )
{
// ここでゲームの処理をします
// ここで描画処理をします
// 移動速度を初期化する
playerVX = 0.0f;
// 自機の移動
// 左キーが押された?
if (GetKey(VK_LEFT))
{
// 移動速度の設定をする
playerVX = -playerSpeed;
}
// 右キーが押された?
if (GetKey(VK_RIGHT))
{
// 移動速度を設定する
playerVX = playerSpeed;
}
// 上キーが押された?
if (GetKey(VK_UP))
{
// 移動速度の設定をする
playerVY = playerSpeed;
}
// 下キーが押された?
if (GetKey(VK_DOWN))
{
// 移動速度を設定する
playerVY = -playerSpeed;
}
// 位置を更新する
playerX += playerVX;
playerY += playerVY;
// 移動範囲の設定(最小)
if (playerX <= playerXMin)
{
// 位置を修正
playerX = playerXMin;
// 移動速度の初期化
playerVX = 0.0f;
}
if (playerY <= playerYMin)
{
// 位置を修正
playerY = playerYMin;
// 移動速度の初期化
playerVY = 0.0f;
}
// 移動範囲の設定(最大)
if (playerX >= playerXMax)
{
// 位置を修正
playerX = playerXMax;
// 移動速度の初期化
playerVX = 0.0f;
}
if (playerY >= playerYMax)
{
// 位置を修正
playerY = playerYMax;
// 移動速度の初期化
playerVY = 0.0f;
}
// 自機の描画
DrawBox(playerX,playerY);
// ここまでで描画処理を終了します。
// 描画を行います。
Render();
}
// 終了処理をします
}
(といっても、ブロックが動いたり、上から降ってくるようなものです)
左右にキャラクターは動かせても、前後にキャラクターを動かすことができません。
どうやったら、動かせますか?教えてください。
↓が実際に打ってみたプログラムです。
間違っているところがあったら、教えてください。
// メイン関数
void main(void)
{
// ここで初期化します
// プレイヤの座標
float playerX = 0.0f;
float playerY = 0.0f;
// プレイヤの移動速度
float playerVX = 0.0f;
float playerVY = 0.0f;
// プレイヤの速さ
float playerSpeed = 0.5f;
// プレイヤの移動範囲
float playerXMin = -19.0f;
float playerXMax = 18.0f;
float playerYMin = -14.0f;
float playerYMax = 13.0f;
// ゲームループ
// Windowが閉じたら、繰り返しを終了します。
while( IsActive() )
{
// ここでゲームの処理をします
// ここで描画処理をします
// 移動速度を初期化する
playerVX = 0.0f;
// 自機の移動
// 左キーが押された?
if (GetKey(VK_LEFT))
{
// 移動速度の設定をする
playerVX = -playerSpeed;
}
// 右キーが押された?
if (GetKey(VK_RIGHT))
{
// 移動速度を設定する
playerVX = playerSpeed;
}
// 上キーが押された?
if (GetKey(VK_UP))
{
// 移動速度の設定をする
playerVY = playerSpeed;
}
// 下キーが押された?
if (GetKey(VK_DOWN))
{
// 移動速度を設定する
playerVY = -playerSpeed;
}
// 位置を更新する
playerX += playerVX;
playerY += playerVY;
// 移動範囲の設定(最小)
if (playerX <= playerXMin)
{
// 位置を修正
playerX = playerXMin;
// 移動速度の初期化
playerVX = 0.0f;
}
if (playerY <= playerYMin)
{
// 位置を修正
playerY = playerYMin;
// 移動速度の初期化
playerVY = 0.0f;
}
// 移動範囲の設定(最大)
if (playerX >= playerXMax)
{
// 位置を修正
playerX = playerXMax;
// 移動速度の初期化
playerVX = 0.0f;
}
if (playerY >= playerYMax)
{
// 位置を修正
playerY = playerYMax;
// 移動速度の初期化
playerVY = 0.0f;
}
// 自機の描画
DrawBox(playerX,playerY);
// ここまでで描画処理を終了します。
// 描画を行います。
Render();
}
// 終了処理をします
}