これが私が今取り組んでいるものです
if (osl_keys->held.down)
{
sprite_position = DOWN;
SpriteAnimate();
sceKernelDelayThread(20000);
sprite->y += 16;
SpriteAnimate();
sceKernelDelayThread(20000);
sprite->y += 16;
}
if (osl_keys->held.up)
{
sprite_position = UP;
SpriteAnimate();
sceKernelDelayThread(20000);
sprite->y -= 16;
SpriteAnimate();
sceKernelDelayThread(20000);
sprite->y -= 16;
}
if (osl_keys->held.right)
{
sprite_position = RIGHT;
SpriteAnimate();
sceKernelDelayThread(20000);
sprite->x += 16;
SpriteAnimate();
sceKernelDelayThread(20000);
sprite->x += 16;
}
if (osl_keys->held.left)
{
sprite_position = LEFT;
SpriteAnimate();
sceKernelDelayThread(20000);
sprite->x -= 16;
SpriteAnimate();
sceKernelDelayThread(20000);
sprite->x -= 16;
}
sceKernelDelayThread(750000);
そして、衝突がより適切になるように、各スプライトを32x32にすることに慎重に決定しました
lokiare1 では、タイルとの衝突をチェックする必要があります。衝突を行う最も徹底的な方法は、スプライトの各可視ピクセルの位置を、他のすべてのスプライトの他のすべてのピクセルに対して確認してから、衝突したスプライトへのポインターを返すことです。これは非常に遅くなります。私が説明する方法は、遅くて汚い作業の衝突検出でなければなりません。私が間違っている場合は、どのように間違っているか教えてください。
これは私が想像するのに苦労している部分です(私はそれを試す前に頭の中で物事がうまくいくことを確認するのが好きです。ランダムにジャンプしないようにします)私は考えようとしてシャワーに座って数晩過ごしました何かがそこにあるかどうかを確認する方法またはそれ
タイルの x、y が固体であることを事前設定する何かを考えているので、固体のオブジェクトがその前にある場合は移動しないでください。
if (osl_keys->held.down)
{
if (y+1 == bush=>y)
{
sprite_march = 4;
SpriteAnimate();
else
{
sprite_position = DOWN;
SpriteAnimate();
sceKernelDelayThread(20000);
sprite->y += 16;
SpriteAnimate();
sceKernelDelayThread(20000);
sprite->y += 16;
}
しかし、もう一度尋ねるだけでコードの量を短縮するにはどうすればよいでしょうか (y+1 == solid) どうすればいいのかわかりません