2017-04-11 5 views
0

私はフラッシュcs6でプラタフォームゲームを開発しようとしています。私は、Plataformaというクラスを作成しました。このクラスでは、そのクラスのプラットフォームがmarioと衝突したかどうかを確認するためにenterFrameEventsというメソッドが必要です。衝突が検出された場合でもマリオのトップを通ります(フラッシュCS6)

しかし、私は何をしても、マリオがトップに衝突したことを検出しますが、マリオはプラットフォームを通過します。しかし、ボトムと他の側面にぶつかるときは起こりません。

私は「plataforma」のシンボルのocorrencesある2つの青色のプラットフォームがある段階では私のコードhttps://www.4shared.com/rar/jqa5oRGWei/AULA_6.html

とのリンクを貼り付けています。クラスPlataformaは、 "plataforma"シンボルのためにフラッシュによって自動的に生成されるactionscriptクラスです。

ここで私は、コード

private function enterFrameEvents(event:Event):void{ 
     if(this.hitTestObject(mario)){ 

     // collision with top 
     if(mario.y + mario.height >= this.y && mario.y <= this.y && 
     mario.x + mario.width >= this.x + 5 && mario.x <= this.x + this.width - 5){ 

     _root.isJumping = false; 
     _root.speedY = 0; 
      mario.y = this.y - mario.height; 
     } 
    ... 
    } 

私はコーナーから5つのピクセルの割引思いを貼り付けています。

ありがとうございました!

+0

私は思います。この** mario.y = this.y - mario.height; **アッププラットフォームを通して、あなたのマリオをテレポート。恐らく** mario.y = this.y; **であるべきです。 – Organis

答えて

1

問題はmario.heightという値です。

説明:この値は常に変更されます。

解決方法:マリオのMovieClipに透明な背景を追加するか、4つの図形より少し大きくします。または、トップコリジョンの後にmario.yに5ピクセルを追加します。例えば

mario.y = this.y - mario.height + 5; 
関連する問題