我在一个球精灵类上创建了一个方法,告诉我是否有碰撞。它应该返回一个布尔值;问题是当我从场景类中调用它时,它会调用方法,但是当我告诉它设置球visible = false
时它不会这样做。
所以我将它创建为BallSprite
类的属性并在那里将其设置为 false,知道为什么它会以这种方式发生吗?
这是相关代码:
public bool isvisible = true; //this is the attribute I added
public bool is_ballCrash() //this checks for collision
{
int maxY = game.GraphicsDevice.Viewport.Height - ballSprite.Height;
return (ballPosition.Y > maxY);
}
if(is_ballCrash()) //this is is_ballCrash usage
{
//crashSound.Play();
ballPosition.Y = 0;
ballSpeed.X = 150;
ballSpeed.Y = 150;
isvisible = false; //***
}
现在在我的场景中:当我在更新方法中添加它时,它可以工作:
if (ballSprite.isvisible == false)
ballSprite.Visible = false;
但这不起作用,这就是我不知道的:
if (ballSprite.is_ballCrash() == true)
{ballSprite.Visible = false;}
它确实返回了一个真值(球在其 y 位置被重置,因此类本身可以工作)。
问题是在场景中输入方法if
会获得它的真实值(或者至少它应该因为方法返回它)但不执行块。
我尝试了其他代码行,例如:
ballSprite.ballSpeed.X -= 1000;
但它没有达到它(不会在断点处停止)
我不明白该方法如何返回 true 并在 sprite 类上做了它应该做的事情,但在场景类的 update 方法上却没有,它应该得到相同的值。
除非我遗漏了一些明显的东西。