0

これが問題です。私はフラッシュが初めてですが、ある程度の知識があるので、小さなサッカーゲームを作成しようとしています. ボール、コントロール、ステージ (サッカー場) があります。問題は、ステージの一部を指定して、ボールがそこに入った場合に「ゴール!!!」と叫ぶサウンド ファイルを再生することです。ボールがアーチに入るたびに... ステージは 800 x 600 です。

これをどのように実装するかについてのアイデアはありますか? どんな助けでも大歓迎です。ありがとうございました!

これは私のコードです:

 

import flash.display.*; import flash.events.*; var begin = new Begin(); var pelota = new Pelota(); var field = new SoccerField(); //Calling methods game beginGame(); //creating the welcome screen function beginGame(){ begin.x = 0; begin.y = 0; addChild(begin); pelota.x = 400; pelota.y = 425; addChild(pelota); } pelota.addEventListener(MouseEvent.CLICK, startGame); function startGame(event:Event) : void{ field.x = 400; field.y = 300; addChild(field); pelota.x = 400; pelota.y = 300; pelota.scaleX = .2; pelota.scaleY = .2; addChild(pelota); } stage.addEventListener(KeyboardEvent.KEY_DOWN, control); function control (evt:KeyboardEvent) : void { trace(evt.keyCode); if (evt.keyCode == Keyboard.LEFT) { pelota.x=pelota.x-5; trace('Left!'); } if (evt.keyCode == Keyboard.RIGHT) { pelota.x=pelota.x+5; } if (evt.keyCode == Keyboard.UP) { pelota.y=pelota.y-5; } if (evt.keyCode == Keyboard.DOWN) { pelota.y=pelota.y+5; } } <pre><code>
4

1 に答える 1

0

私の頭のてっぺんから2つの方法でこれを行うことができます(ゴールエリアはおおよそ長方形の形だと思います):

1.)ボールとゴールをムービークリップ/表示オブジェクトとして作成し、hitTestObject()メソッド呼び出しを実行して、それらが互いに「接触」しているかどうかを確認します。ゴールの実際の「トリガー」領域は視覚領域よりも小さくすることができるため、ボールが視覚的にゴールの内側にある場合にのみボールがそれに触れることができます。

2.)これは円対長方形の衝突検出です。あなたは純粋数学の計算を通して問題を解決することができます。検索することで実際のアルゴリズムを見つけることができるはずであり、特にゴールの長方形が軸に沿っている場合(ステージに対して0度または90度)、書くのはそれほど難しくありません。

2番目の方法はより速く、おそらくより正確に機能しますが、最初の方法は、最初に機能させるための迅速で汚い方法である可能性があります。どちらのメソッドも、trueの場合にサウンドを再生するブール値を返すことができます。サウンドを再生するには、Sound{}クラスを検索します。

于 2012-12-03T03:40:12.327 に答える