function ProcessCollisions():void{
//respawn if player died
if(percentHP == 0){
Player.x = _startMarker.x;
Player.y = _startMarker.y;
Gun.x = Player.x;
Gun.y = Player.y - 45;
_boundaries.x = 0;
_boundaries.y = 0;
Player.vy = 0;
currentHP = maxHP;
}
//when Player is Falling
if(Player.vy > 0){
//Otherwise process collisions of boundaires
var collision:Boolean = false;
if(_boundaries.hitTestPoint(Player.x, Player.y, true)){collision = true;}
if(collision == true){
while(collision == true){
Player.y -= 0.1;
Gun.y -= 0.1;
collision = false;
if(_boundaries.hitTestPoint(Player.x, Player.y, true)){collision = true;}
}
trace("Collision is " + collision);
currentHP -= Player.vy * .1
Player.vy = 0;
Gun.vy = 0;
JumpCount = 0;
}
}
}AS3衝突過程は絶えず私が衝突ブール値は、常に私は_boundaries内のオブジェクトと衝突していた場合にも偽として返され、この問題を持っている...偽
私の衝突処理は上記で返します。 whileループが常にプレーヤーを境界線から引き離し、プレーヤーが一見無限に落ちるように、私のプレーヤーに振る舞いを与えます。また、私はPlayer.vyにいくつかのより多くの変更を加える入力フレームタイマによって呼び出されたフレームハンドラでは、そのは
function FrameHandler(e:Event):void{
//If Statements to slow character
if(aKeyPressed == false && Player.vx > 0){
Player.vx -= 1
}
else if(dKeyPressed == false && Player.vx < 0){
Player.vx += 1
}
//Gravitates Player
Player.vy += 1.5;
//Controls arrays of bullets for Weapons
//Process Collisions
ProcessCollisions();
//Scroll Stage
scrollStage();
//Attunes for multiple keypresses
MultipleKeypresses();
//Keeps Gun attached to Players Arm
Gun.x = Player.x
Gun.y = Player.y - 45;
if(sKeyPressed){
Gun.y = Player.y - 13;
Gun.x = Player.x + 8;
}
//Checks Health
updateHealthBar()
//move Player and Gun
Gun.y += Player.vy;
Gun.x += Player.vx;
Player.x += Player.vx;
Player.y += Player.vy;
}
_boundariesは何ですか、サイズ設定はどこですか?キャラクターを揺さぶっている場合でも、ある時点で衝突=真の状態になっていなければなりません。そうでなければ、プレイヤーの位置を「修正」するループに入ることはありません – shaunhusain
それでは、衝突は本当に戻ります。 "揺れ"を止める? _境界は、さまざまなオブジェクトを含むステージの約2倍のムービークリップです。これは、レベル設計で構成されています。 – Cory