所以我有以下代码表达“AI”运动。 pdl_R是AI桨,AIH是AI高度,AIHS是AI高度速度。我希望代码能够通过AIH向AIHS方向移动桨。
pdl_R.y=AIH;
AIH+=(3*AIHS);
if(pdl_R.y==stage.stageHeight || pdl_R.y==stage.stageHeight-pdl_R.height)
{
AIHS*=-1;
}
但是当pdl_R(AI拨片)到达屏幕的底部(向下是默认方向)时,它会停留在那里并且上下闪烁3个像素(而不是预期的方向切换)。
我的初始AIH是200,我的初始AIHS是1。
答案 0 :(得分:0)
在以下if语句中:
if(pdl_R.y==stage.stageHeight || pdl_R.y==stage.stageHeight-pdl_R.height)
{
AIHS*=-1;
}
使用桨叶高度(30)和舞台高度(600)的一些示例数字,您要问:
if(paddle.y == 600 || paddle.y == 570)
{
ReversePaddleDirection
}
这可以解释桨叶卡在底部,因为它将永远在570到600之间反弹,一旦到达其中一个就会反转。
如果不是这种情况,我们可以使用更多信息(即实际的舞台高度和桨高)来进一步调试。
答案 1 :(得分:0)
当您的AIH到达stage.stageHeight时,会发生以下情况:
修改AIHS后,将修改AIH。这实际上是导致错误的最常见原因,您首先应用未更改的值,然后更改它,而不是先更改,然后应用。