ページ 11

キャラクターを動かしたいんですが・・・

Posted: 2010年5月23日(日) 18:50
by かなり初心者
現在、シューティングゲームを作っているところなのですが、
(といっても、ブロックが動いたり、上から降ってくるようなものです)
左右にキャラクターは動かせても、前後にキャラクターを動かすことができません。
どうやったら、動かせますか?教えてください。


↓が実際に打ってみたプログラムです。
間違っているところがあったら、教えてください。

// メイン関数
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();
}

// 終了処理をします
}

Re:キャラクターを動かしたいんですが・・・

Posted: 2010年5月23日(日) 19:11
by たかぎ
> かなり初心者

この名前を今後ずっと使っていくつもりでしょうか?
それとも、捨てハンのつもりでしょうか?
いずれにせよ、利用規約を熟読してください。

Re:キャラクターを動かしたいんですが・・・

Posted: 2010年5月23日(日) 20:06
by Ma
ぱっとみ上下移動できないような問題はない気がする
が、しいて言えば

playerVX = 0.0f;

の初期化部分に
playerVY = 0.0f;
を追加するべき。