이것은 내가 진행하고있는 플래시 게임을위한 것입니다. LevelOnePlayer와 Wall11 사이의 충돌 감지 기능을 개선하려고합니다. 그러나 Wall Hit Detection 변수를 0.1 픽셀 씩 변경하더라도 플레이어가 벽에 너무 가깝거나 너무 멀면 충돌을 계속 감지합니다. 어쨌든 충돌 감지 픽셀을 완벽하게 만들 수 있습니까?Actionscript 3.0. 충돌 감지를 보정하는 방법?
const LEFT_WALL_HIT_DETECTION: Number=5.5;
const RIGHT_WALL_HIT_DETECTION: Number=5.5;
const UP_WALL_HIT_DETECTION: Number=5.5;
const DOWN_WALL_HIT_DETECTION: Number=5.5;
const ENEMY_HIT_DETECTION: Number=5.5;
var left:Boolean = false;
var right:Boolean = false;
var up:Boolean = false;
var down:Boolean = false;
var leftBumping:Boolean = false;
var rightBumping:Boolean = false;
var upBumping:Boolean = false;
var downBumping:Boolean = false;
var Onespeed: Number=3.5;
var LevelOneStartFrame: Number=1010;
addEventListener(Event.ENTER_FRAME, LevelOne);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased);
function keyPressed(event:KeyboardEvent): void{
if(event.keyCode == Keyboard.LEFT || event.keyCode == 65){
left=true;
}
if(event.keyCode == Keyboard.RIGHT || event.keyCode == 68){
right=true;
}
if(event.keyCode == Keyboard.UP || event.keyCode == 87){
up=true;
}
if(event.keyCode == Keyboard.DOWN || event.keyCode == 83){
down=true;
}
}
function keyReleased(event:KeyboardEvent): void{
if(event.keyCode == Keyboard.LEFT || event.keyCode == 65){
left=false;
}
if(event.keyCode == Keyboard.RIGHT || event.keyCode == 68){
right=false;
}
if(event.keyCode == Keyboard.UP || event.keyCode == 87){
up=false;
}
if(event.keyCode == Keyboard.DOWN || event.keyCode == 83){
down=false;
}
}
function LevelOne(event:Event){
if(left){
LevelOnePlayer.x-=Onespeed;
}
if(right){
LevelOnePlayer.x+=Onespeed;
}
if(up){
LevelOnePlayer.y-=Onespeed;
}
if(down){
LevelOnePlayer.y+=Onespeed;
}
if(Wall11.hitTestPoint(LevelOnePlayer.x-LEFT_WALL_HIT_DETECTION, LevelOnePlayer.y, true))
leftBumping=true; else leftBumping=false;
if(Wall11.hitTestPoint(LevelOnePlayer.x+RIGHT_WALL_HIT_DETECTION, LevelOnePlayer.y, true))
rightBumping=true; else rightBumping=false;
if(Wall11.hitTestPoint(LevelOnePlayer.x, LevelOnePlayer.y+DOWN_WALL_HIT_DETECTION, true))
downBumping=true; else downBumping=false;
if(Wall11.hitTestPoint(LevelOnePlayer.x, LevelOnePlayer.y-UP_WALL_HIT_DETECTION, true))
upBumping=true; else upBumping=false;
if(leftBumping) LevelOnePlayer.x+=Onespeed;
if(rightBumping) LevelOnePlayer.x-=Onespeed;
if(downBumping) LevelOnePlayer.y-=Onespeed;
if(upBumping) LevelOnePlayer.y+=Onespeed;
}
또한 WASD 키가 완벽하게 작동하지 못했습니다. 거기에 어쨌든 해결할 수 있습니까? –
게시 된 답변이 작동하면 '✔'아이콘을 사용하여 해결 된 것으로 표시하십시오. –
이 문제를 해결하는 데 여전히 어려움이 있습니다. 이미 무비 클립을 그렸기 때문에 무비 클립을 코드없이 비트 맵으로 변환 할 수도 없습니다. LevelOnePlayer를 삭제하고 LevelOnePlayer와 똑같이 보이는 비트 맵 (코드 포함)을 만들려고 시도했지만 LevelOnePlayer라는 이름을 사용했지만 게임의 작동 방식이 크게 달라지기 때문에 도움이되지 않았습니다. 무비 클립을 코드없이 비트 맵으로 변환하는 방법이 있습니까? –