这就是我现在正在使用的东西
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)来缩短代码量,我不知道该怎么做