これは私が取り組んでいるフラッシュゲーム用です。私はLevelOnePlayerとWall11間の衝突検出を改善しようとしています。しかし、壁ヒット検出の変数を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という名前を付けてみましたが、これはゲームの動作が大きく異なるためです。ムービークリップをコードなしでビットマップに変換する方法はありますか? –