Actionscript 3 Flash Professional CC Actionscript 3.0 HitTestpoint

Actionscript 3 Flash Professional CC Actionscript 3.0 HitTestpoint,actionscript-3,flash,hittest,flash-cc,Actionscript 3,Flash,Hittest,Flash Cc,在过去的一周里,我一直在忙着做一个游戏,我遇到了一个问题。我想做的是一个迷宫式的游戏,你必须找到自己的出路。将会有一个动态灯光系统添加到这个系统中,但是稍后。现在,我有一个问题,我的球员和墙壁碰撞。以下是编码: if(back.hitTestPoint(plr.x + leftBumpPoint.x, plr.y + leftBumpPoint.y, true)){ leftBumping = true; } else { leftBumping = false; } if(back.hitTe

在过去的一周里,我一直在忙着做一个游戏,我遇到了一个问题。我想做的是一个迷宫式的游戏,你必须找到自己的出路。将会有一个动态灯光系统添加到这个系统中,但是稍后。现在,我有一个问题,我的球员和墙壁碰撞。以下是编码:

if(back.hitTestPoint(plr.x + leftBumpPoint.x, plr.y + leftBumpPoint.y, true)){
leftBumping = true;
} else {
leftBumping = false;
}
if(back.hitTestPoint(plr.x + rightBumpPoint.x, plr.y + rightBumpPoint.y, true)){
rightBumping = true;
} else {
rightBumping = false;
}
if(back.hitTestPoint(plr.x + upBumpPoint.x, plr.y + upBumpPoint.y, true)){
upBumping = true;
} else {
upBumping = false;
}
if(back.hitTestPoint(plr.x + downBumpPoint.x, plr.y + downBumpPoint.y, true)){
downBumping = true;
} else {
downBumping = false;
}
if(leftBumping){
    if(xSpeed < 0){
        xSpeed *= -0.5;
    }
}
if(rightBumping){
    if(xSpeed > 0){
        xSpeed *= -0.5;
    }
}
if(upBumping){
    if(ySpeed < 0){
        ySpeed *= -0.5;
    }
}
if(downBumping){
    if(ySpeed > 0){
        ySpeed *= -0.5;
    }
}
if(Math.abs(xSpeed) < 0.5){
    xSpeed = 0;
}
if(xSpeed > maxSpeedConstant){
    xSpeed = maxSpeedConstant;
} else if(xSpeed < (maxSpeedConstant * -1)){
    xSpeed = (maxSpeedConstant * -1);
}
if(back.hitTestPoint(plr.x+leftBumpPoint.x,plr.y+leftBumpPoint.y,true)){
leftBumping=true;
}否则{
leftBumping=false;
}
if(back.hitTestPoint(plr.x+righbumppoint.x,plr.y+righbumppoint.y,true)){
右碰撞=真;
}否则{
右碰撞=假;
}
if(back.hitTestPoint(plr.x+uppumppoint.x,plr.y+uppumppoint.y,true)){
上泵=正确;
}否则{
上泵=错误;
}
if(back.hitTestPoint(plr.x+downBumpPoint.x,plr.y+downBumpPoint.y,true)){
下颠簸=真;
}否则{
向下碰撞=错误;
}
如果(左碰撞){
如果(x速度<0){
xSpeed*=-0.5;
}
}
如果(右碰撞){
如果(xSpeed>0){
xSpeed*=-0.5;
}
}
如果(向上泵送){
如果(Y速度<0){
Y速度*=-0.5;
}
}
if(下颠簸){
如果(Y速度>0){
Y速度*=-0.5;
}
}
if(数学绝对速度(X速度)<0.5){
xSpeed=0;
}
如果(xSpeed>maxSpeedConstant){
xSpeed=maxSpeedConstant;
}否则如果(X速度<(maxSpeedConstant*-1)){
xSpeed=(maxSpeedConstant*-1);
}
所以,我遇到的问题是,当我的玩家与墙壁相撞时,他不会停下来。相反,他只是减速到一个非常慢的速度。我想让球员完全停下来。有人能帮我吗?
PS.“back”是墙的实例名称,“plr”是播放器的实例名称。

您是否尝试过追踪播放器的前后x,y位置。可能会让您深入了解所遇到的问题。调试和故障排除对编程至关重要。我鼓励你使用这样一个问题来了解这些主题。“如果”在大量使用时是一个非常糟糕的主意,那么只有在没有其他解决方案的情况下,你才应该使用它。。。。试试“开关”吧。。像这样:“切换(true){case back.hitTestPoint(plr.x+leftBumpPoint.x,plr.y+leftBumpPoint.y,true):leftBumping=true;break;”等等…………谢谢各位。我会试试这些。正如你们所知,我对actionscript 3编码还不熟悉,所以这可能不起作用,但我还是会试试。