1
キャラクターがタイルのどこにあるかを確認しようとしています。上下に動いたときに次のタイルに移動しますが、その方法はわかりません。今は、キャラクターがピクセル単位で移動する場所を設定しましたが、1平方で移動します。概要rpgのタイル貼りのスペース
今のコードはこれで、動作しますが、ピクセルモードではうんざりです。私はそれがブロックによってそれがよりよく働くかもしれないと思うが、私はとにかくそれを変えるかもしれない。
float spritewidth = sprite->stretchX;
float spriteheight = sprite->stretchY;
float bushwidth = bush->stretchX;
float bushheight = bush->stretchY;
//Basic border collision
if (sprite->x <= 0)
sprite->x = 0;
if (sprite->y <= 0)
sprite->y = 0;
if (sprite->x >= 455)
sprite->x = 455;
if (sprite->y >= 237)
sprite->y = 237;
if ((sprite->x + spritewidth > bush->x) && (sprite->x < bush->x + bushwidth) && (sprite->y + spriteheight > bush->y) && (sprite->y < bush->y + bushheight))
{
bushcol = 1;
}
else
{
bushcol = 0;
}
if (osl_keys->held.down)
{
if (bushcol == 1)
{
sprite->y = bush->y - spriteheight - 3;
bushcol = 0;
}
else
{
bushcol = 0;
sprite->y += 3;
}
}
if (osl_keys->held.up)
{
if (bushcol == 1)
{
sprite->y = bush->y + bushheight + 3;
bushcol = 0;
}
else
{
bushcol = 0;
sprite->y -= 3;
}
}
if (osl_keys->held.right)
{
if (bushcol == 1)
{
sprite->x = bush->x - spritewidth - 3;
bushcol = 0;
}
else
{
bushcol = 0;
sprite->x += 3;}
}
if (osl_keys->held.left)
{
if (bushcol == 1)
{
sprite->x = bush->x + bushwidth + 3;
bushcol = 0;
}
else
{
bushcol = 0;
sprite->x -= 3;
}
}
質問は? –
もう少し情報を使うことができました...おそらく、ブッシュとスプライトのクラスを表示しますか? また、タイルは単なるピクセルの集まりなので、できるだけ小さいスケールでは機能しない場合は、大きなタイルでは機能しない可能性があります。 –