首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++中与psp的OSlib的冲突问题

C++中与psp的OSlib的冲突问题
EN

Stack Overflow用户
提问于 2009-05-13 22:38:07
回答 1查看 498关注 0票数 0

我正在使用带有pspsdk工具链的oslib,但由于某些原因,它不能按照我认为的方式工作

代码语言:javascript
复制
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;

 //Bush
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 == 0)
   {
     sprite->y += 4;
     sprite_position = DOWN;
     SpriteAnimate();
   }
   else
   { 
     sprite->y -= 6;
     bushcol = 0;
   }
 }

 if (osl_keys->held.up)    
 {
   if (bushcol == 0)
   {
     sprite->y -= 4;
     sprite_position = UP;
     SpriteAnimate();
   }
   else
   { 
     sprite->y += 6;
     bushcol = 0;
   }
 }

 if (osl_keys->held.right)
 {
   if (bushcol == 0)
   {
     sprite->x += 4;
     sprite_position = RIGHT;
     SpriteAnimate();
   }
   else
   { 
     sprite->x -= 6;
     bushcol = 0;
   }
 }

 if (osl_keys->held.left)
 {
   if (bushcol == 0)
   {
     sprite->x -= 4;
     sprite_position = LEFT;
     SpriteAnimate();
   }
   else
   { 
     sprite->x += 6;
     bushcol = 0;
   }
 }

当我试图离开时,精灵开始向灌木丛相反的方向移动,但最终还是自由地落了下来。

有没有更好的碰撞方法或建议?

我甚至在每个按钮上都试了一下,还是没有成功。

代码语言:javascript
复制
if (osl_keys->held.down)
{
  if ( (sprite->x + spritewidth > bush->x) &&
       (sprite->x < bush->x + bushwidth) && 
       (sprite->y + spriteheight > bush->y) &&
       (sprite->y < bush->y + bushheight) ) 
  {
    sprite->y -= 4; 
  }
  else
  {
    sprite->y += 2;
    sprite_position = DOWN;
    SpriteAnimate();
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-05-13 23:32:51

你可以做的一件事是,当角色碰到灌木丛时,你可以改变他的位置,而不是让他“向后移动”。

我的意思是这样的:(在示例中只使用up )。

代码语言:javascript
复制
 if (osl_keys->held.up)    
 {
   if (bushcol == 0)
   {
     sprite->y -= 4;
     sprite_position = UP;
     SpriteAnimate();
   }
   else
   { 
     sprite->y = bush->y + 2;
     bushcol = 0;
   }
 }

这样,每当精灵发生碰撞时,它只是设置位置,而不是让它向后移动。

还有其他方法可以进行碰撞检测,但我现在太累了,无法立即得出一个智能的、可读性差的答案……在谷歌上搜索一下,就会找到很多结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/860779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档