CでのPSP用OSlibとの衝突の問題++
-
21-08-2019 - |
質問
Imはpspsdkツールチェーンでoslib使用して、いくつかの理由で、このdoesntのは、私が思うように動作し、それだろう。
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;
}
}
スプライトは私が離れて移動しようとするが、最終的に自由落下しない場合にはブッシュから反対方向に移動を開始します。
任意のより良い衝突方法や提案
私も各ボタンのためにこれを試しても運
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();
}
}
解決
あなたができることの一つは、代わりに文字彼はブッシュに当たったとき、あなたは彼の位置を変更することができ、「後方移動」を有するのである。
このような何か私は何を意味している:。(たとえばまでしか使用)
if (osl_keys->held.up)
{
if (bushcol == 0)
{
sprite->y -= 4;
sprite_position = UP;
SpriteAnimate();
}
else
{
sprite->y = bush->y + 2;
bushcol = 0;
}
}
スプライトが衝突したときにそうすれば、それはだけではなく、それが逆方向に移動することになっ位置を設定します。
があり、衝突検出を行うための他の方法がありますが、私は、インテリジェントをやってのける今あまりにも疲れて、あまり読み、今答える...グーグルの検索は、多くの成果を上げます。
所属していません StackOverflow