Wellp을 통해 문자, 내가 찾아 봤는데 밀어, 그들은이에 와서 나는 녹색으로 해요 ..AS3 충돌 감지 - 점프 바닥
내가 배우고 싶은 때문에 최근 AS3와 함께 연주하기 시작했습니다 그래서 저는 간단한 platformer 거래를 시작했습니다.
내 문제가 인 것을 알고 있다고 생각하지만 해결 방법을 찾지 못했습니다. 내가 연구 할 수 있는지부터
,이 선수의 위치 계산/프레임 속도의 문제이다. 캐릭터가 바닥과 관련하여 자신의 위치를 계산하기에는 너무 멀리 지나갔고, 마침내 자신이 어디에 있는지를 인식하면 재 보정이 시작되어 그를 0으로 되돌립니다.
내 특정 문제는 튜토리얼과 물건을 만드는 모든 사람들이 서로 다른 라벨링 시스템을 사용하고 내가 plainspeak이 특정 문제에 적응 충분히 아무것도 찾을 수 있다는 것입니다.
그래서 물어 저를 용서하지만, 혹시 누군가가 내 코드를 체크 아웃하고 일이 잘못 어디로 가는지 나를 발견 도움이 될 것입니다하시기 바랍니다. 그것은
경우 (downBumping) 비트 함께 할 수있는 뭔가가 같은 느낌,하지만 난 변경하는 방법을 알아 내기 위해 사투를 벌인거야. : 어떤 도움이 그래서 매우 감사하겠습니다
import flash.geom.Point;
import flash.events.KeyboardEvent;
import flash.events.Event;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
stage.addEventListener(Event.ENTER_FRAME, loop);
var scrollX:Number = 0;
var scrollY:Number = 0;
var xSpeed:Number = 0;
var ySpeed:Number = 0;
var leftPressed:Boolean = false;
var rightPressed:Boolean = false;
var upPressed:Boolean = false;
var downPressed:Boolean = false;
var leftBumping:Boolean = false;
var rightBumping:Boolean = false;
var upBumping:Boolean = false;
var downBumping:Boolean = false;
var leftBumpPoint:Point = new Point(-62, 40);
var rightBumpPoint:Point = new Point(62, 40);
var upBumpPoint:Point = new Point(0, -83);
var downBumpPoint:Point = new Point(0, 80);
var animationState:String = "idle";
class Player extends player {
var speedConstant:int = 4;
var friction:Number = .75;
var maxSpeedConstant:Number = 18;
var gravityConstant:Number = 16;
var jumpConstant:Number = -180;
}
function loop(e:Event):void{
if(back.collisions.hitTestPoint(player.x + leftBumpPoint.x, player.y + leftBumpPoint.y, true)){
trace("my butt!!");
leftBumping = true;
} else {
leftBumping = false;
}
if(back.collisions.hitTestPoint(player.x + rightBumpPoint.x, player.y + rightBumpPoint.y, true)){
trace("my face!!");
rightBumping = true;
} else {
rightBumping = false;
}
if(back.collisions.hitTestPoint(player.x + upBumpPoint.x, player.y + upBumpPoint.y, true)){
trace("my head!!");
upBumping = true;
} else {
upBumping = false;
}
if(back.collisions.hitTestPoint(player.x + downBumpPoint.x, player.y + downBumpPoint.y, true)){
trace("my feet!");
downBumping = true;
} else {
downBumping = false;
}
//speed mechanics
if(leftPressed){
xSpeed -= speedConstant;
player.scaleX = -1;
} else if(rightPressed){
xSpeed += speedConstant;
player.scaleX = 1;
}
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 *= -.19;
}
if(upPressed){ //and if we're pressing UP
ySpeed = jumpConstant; //set y speed to jump constant
}
} else {//if we are not touching the floor
ySpeed += gravityConstant; //accelerate downwards
}
if(xSpeed > maxSpeedConstant){
xSpeed = maxSpeedConstant;
} else if(xSpeed < (maxSpeedConstant * -1)){
xSpeed = (maxSpeedConstant * -1);
}
xSpeed *= friction;
ySpeed *= friction;
if(Math.abs(xSpeed) < 0.5){
xSpeed = 0;
}
scrollX -= xSpeed;
scrollY -= ySpeed;
back.x = scrollX;
back.y = scrollY;
if((leftPressed || rightPressed || xSpeed > speedConstant || xSpeed < speedConstant *-1) && downBumping){
animationState = "walk";
}else if(downBumping){
animationState = "idle";
}
if(player.currentLabel !=animationState){
player.gotoAndStop(animationState)
}
}
function keyDownHandler(e:KeyboardEvent):void{
if(e.keyCode == Keyboard.LEFT){
leftPressed = true;
} else if(e.keyCode == Keyboard.RIGHT){
rightPressed = true;
} else if(e.keyCode == Keyboard.UP){
upPressed = true;
} else if(e.keyCode == Keyboard.DOWN){
downPressed = true;
}
}
function keyUpHandler(e:KeyboardEvent):void{
if(e.keyCode == Keyboard.LEFT){
leftPressed = false;
} else if(e.keyCode == Keyboard.RIGHT){
rightPressed = false;
} else if(e.keyCode == Keyboard.UP){
upPressed = false;
} else if(e.keyCode == Keyboard.DOWN){
downPressed = false;
}
}
: \
여기에 코드입니다. 나는 배우기를 원하지만 정확히 무엇을 찾아야할지 모를 때 힘들다. 너무 고마워!