Проблема с моим текущим проектом игровой платформы заключается в том, что персонаж останавливается перед ударом по стене слева от персонажа и слишком поздно останавливается с правой стороны персонажа.Персонаж hitTest Wall
Вот сценарий связан с проблемой:
char.topBumping=false;
char.bottomBumping=false;
char.leftBumping=false;
char.rightBumping=false;
char.speed=0;
char.maxSpeedConstant=10;
char.minSpeedConstant=-10;
char.xVel=0;
char.yVel=0;
stage.addEventListener(Event.ENTER_FRAME,EnterFrame);
function EnterFrame(e:Event){
//local points
top_left_point_local = new Point(char.top_left.x,char.top_left.y);
bottom_left_point_local = new Point(char.bottom_left.x,char.bottom_left.y);
top_right_point_local = new Point(char.top_right.x,char.top_right.y);
bottom_right_point_local = new Point(char.bottom_right.x,char.bottom_right.y);
//global points
top_left_point = new Point(char.localToGlobal(top_left_point_local).x,char.localToGlobal(top_left_point_local).y);
bottom_left_point = new Point(char.localToGlobal(bottom_left_point_local).x,char.localToGlobal(bottom_left_point_local).y);
top_right_point = new Point(char.localToGlobal(top_right_point_local).x,char.localToGlobal(top_right_point_local).y);
bottom_right_point = new Point(char.localToGlobal(bottom_right_point_local).x,char.localToGlobal(bottom_right_point_local).y);
if(ground.hitTestPoint(top_left_point.x,top_left_point.y,true)){
char.leftBumping=true;
}
if(ground.hitTestPoint(bottom_left_point.x,bottom_left_point.y,true)){
char.leftBumping=true;
}
if(!ground.hitTestPoint(top_left_point.x,top_left_point.y,true)&&!ground.hitTestPoint(bottom_left_point.x,bottom_left_point.y,true)){
char.leftBumping=false;
}
if(ground.hitTestPoint(top_right_point.x,top_right_point.y,true)){
char.rightBumping=true;
}
if(ground.hitTestPoint(bottom_right_point.x,bottom_right_point.y,true)){
char.rightBumping=true;
}
if(!ground.hitTestPoint(top_right_point.x,top_right_point.y,true)&&!ground.hitTestPoint(bottom_right_point.x,bottom_right_point.y,true)){
char.rightBumping=false;
}
if(char.rightBumping){
if(char.xVel>0){
char.xVel=0;
char.speed=0;
}
}
if(char.leftBumping){
if(char.xVel<0){
char.xVel=0;
char.speed=0;
}
}
char.x+=char.xVel;
char.y+=char.yVel;
}
Кто-нибудь еще сталкивался с этой проблемой? Любая помощь будет высоко ценится.
Update:
Это суть проблемы, по какой-то причине, характер удара по левой стене выходит правда здесь, даже когда персонаж стоит еще (левая не нажата).
Звучит как проблема с измельчением того, сколько движения должно быть сделано, поскольку персонаж приближается к объектам, просто проверяя, что означает скорость символов, когда они близки к объектам. Например, если их скорость равна 5 и они находятся на расстоянии 4 пикселя от объекта, разрешите игроку перемещаться на 4 пикселя, чтобы они совпадали с объектом. –
Я вижу, что вы говорите, Славный Раскаль, но как бы вы предложили мне выполнить это – DrakeTruber