0
현재 플랫폼 게임 프로젝트의 문제점은 캐릭터의 왼쪽면 벽에 부딪 치기 전에 캐릭터가 멈추고 캐릭터의 오른쪽면에서 너무 늦게 멈추는 것입니다.캐릭터 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;
}
다른 사람이 문제가 발생 했습니까? 어떤 도움을 많이 주시면 감사하겠습니다.
업데이트 :
이 문제의 핵심은 왼쪽 벽을 때리는 캐릭터가 캐릭터가 여전히 서있는 동안에도 여기에서 밖으로 진정한 온다 어떤 이유에서이다 (왼쪽을 누르면되지 않는).
소리가 개체 근처에있을 때 문자의 속도가 무엇인지 확인하기 만하면 문자가 물체에 가까워지면서 얼마나 많은 움직임을 만들어야하는지와 같은 문제가 있습니다. 예를 들어, 속도가 5이고 대상에서 4 픽셀 떨어진 경우 플레이어가 개체를 따라갈 수 있도록 4 픽셀만큼 이동하게하십시오. –
나는 당신의 말을 알 수있다. Sally Raskal,하지만 당신은 어떻게 이것을 제안하겠습니까? – DrakeTruber