вот с чем я сейчас работаю
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), что я не уверен, как это сделать