因此,我使用C#在XNA中創建了一個遊戲,並且我有隨機位置創建的牆,並且我試圖阻止穿過它們的東西/被傳送到屏幕上的點時他們擊中了他們。 (注意,左,右,現在的作品,它只是在頂部和底部)在XNA中創建牆壁
if (collision(wallRect[k], wallColours, pacmanRect, pacmanColor, 0))
//Collision works, not an issue here
{
if (pacmanRect.Bottom > wallRect[k].Top && pacmanRect.Top < wallRect[k].Bottom)
{
if (pacmanRect.Right >= wallRect[k].Left
&& pacmanRect.Right < wallRect[k].Right)
{
pacmanPos.X = wallRect[k].X - frameSize.X;
//frameSize is the size of the pacman sprite
}
else if (pacmanRect.Left <= wallRect[k].Right
&& pacmanRect.Left > wallRect[k].Left)
{
pacmanPos.X = wallRect[k].X + frameSize.X/8;
}
}
else if (pacmanRect.Right > wallRect[k].Left && pacmanRect.Left < wallRect[k].Right)
{
if (pacmanRect.Bottom >= wallRect[k].Top)
{
pacmanPos.Y = wallRect[k].Y - frameSize.Y/8;
}
else if (pacmanRect.Top <= wallRect[k].Bottom)
{
pacmanPos.Y = wallRect[k].Y + frameSize.Y/8;
}
}
playSound(collisionSoundInstance);
}
也就是說在遊戲中的環中pacmanPos被更新的最後一個點。那麼,我該如何做到這一點,以便牆壁是實際的牆壁,你不能穿過它們?
我不明白是什麼問題。你有問題嗎?代碼不工作?如果它不工作,你期望它做什麼,它不是在做什麼?你可以使用調試器來遍歷代碼嗎? –
希望能幫助清除它。這只是沒有做我期望的事,或我想要的。 – Yann
如果你想保持自己的代碼,你應該解釋它是如何工作的,什麼是frameSize?碰撞方法是什麼? –