説明が少し曖昧であることに気付きました。コードを示さずに問題を説明することはできませんでした!
基本的に私は AS3 でゲームを作成しました。このゲームには、キャラクターがプラットフォーム スタイルのレベルを移動してアイテムを収集するものが組み込まれています。アイテムはすべて、同じインスタンス (vinyl1a) の個別のムービークリップです。
レベル内の各アイテムへの参照は、次のように配列に格納されます。
vinylArray=[mapbg.misc.vinyl1, mapbg.misc.vinyl2, mapbg.misc.vinyl3, mapbg.misc.vinyl4,...]
実際の配列は最大 40 項目です。衝突検出は、次に示すように for ループを介して行われます。
var i:int;
for (i=0; i < maxVinyl; i++){ //iterate from 0 to maximum amount of vinyl
if (woody.hitTestObject(vinylArray[i])) { //checks if woody collides with vinyl
if (vinylArray[i].visible == true) { //checks if the vinyl has already been taken
vinylArray[i].visible = false; //removes vinyl from map
vinylCollected++; //adds to score
updateScore();
}
}
}
このシナリオでは「woody」がキャラクターです。さて、問題は、ゲームの最初の 3 つのレベルをカバーする最大 10 個の「ビニール」アイテムに対して完全に正常に機能していることです。これで第 4 レベルに進み、マップにさらに「vinyl」ムービークリップを追加しました (配列には常に 40 個の値がありましたが、for ループは個々のレベルごとに設定された「maxVinyl」までしか反復しません)。衝突検出が機能しない理由。
エラー メッセージは表示されず、最初の 10 個のムービークリップは正しく検出されますが、11 個以降は正しく検出されません。
どんな助けでも大歓迎です - そして、問題についてもっと情報が必要なら、尋ねてください!
乾杯
編集: 言い忘れましたが、最初のレベルで 10 枚以上のビニールをテストしたところ、検出が機能しました。状況は、すべてのビニール ムービークリップが、misc と呼ばれるムービークリップ内の各レベルの個別のキー フレームに格納されていることです。だから私は最初のレベルで10+を行うことができますが、それはそれのようです..