0

AS3でビデオガミッシュを開発してきました。道路、火、フィニッシュゲートなどを含むゲームフィールドを描画する配列があります。次に、プレーヤーがマウスで制御するMovieClipを追加し、道路のMovieClipとの衝突を確認します。

しかし、私は動作しません...それは「IN」をトレースすることはありません。コードにエラーが見つかりませんでした-しかし、確信が持てません...この問題を解決するために手を貸していただけませんか。

みんなありがとう!

コードは次のとおりです。

 Declarations:
    public class  Player extends MovieClip
    {
        public var player:MovieClip;
        public var road:MovieClip;
        public var finish:MovieClip;
        public var fire:MovieClip;
        public var sting:MovieClip;

        public var map:Array = new Array();

アレイの初期化:

/* 1 ROAD
         * 2 FINISH
         * 3 FIRE
         * 4 STRING
         */

        public function Player():void
        {
            map = [ [ 1, 1, 3, 3, 3, 3, 3, 3, 1, 1 ],
                    [ 1, 1, 3, 4, 4, 4, 4, 3, 1, 1 ],
                    [ 1, 1, 3, 4, 4, 4, 4, 3, 1, 1 ],
                    [ 1, 1, 3, 3, 3, 3, 3, 3, 1, 1 ],
                    [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 ],
                    [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 ],
                    [ 1, 1, 3, 3, 3, 3, 3, 3, 1, 1 ],
                    [ 1, 1, 3, 4, 4, 4, 4, 3, 1, 1 ],
                    [ 1, 1, 3, 4, 4, 4, 4, 3, 1, 1 ],
                    [ 1, 1, 3, 3, 3, 3, 3, 3, 1, 1 ]
                  ];
            // 10 x 10 array

hitTest関数の追加:

addEventListener(  Event.ENTER_FRAME, playerHitTest );

そしてhitTest関数:

public function playerHitTest( e:Event ):void
{
    if ( player.hitTestObject( road ) )
    {

        trace("IN");
    }
}

PS:条件を設定する!player.hitTestObject( road )と、常に「IN」をトレースします。

再度、感謝します!

4

1 に答える 1

2

何が起こっているかを正確に確認するための十分なコードはありませんが、1つの道路オブジェクトに対してのみチェックしているため、hitTestが失敗することは明らかですが、マップ配列によると、多くの道路オブジェクトがあるはずです。

道路オブジェクトを格納するための配列が必要になります。

var roadArray:Array = [];

道路オブジェクトを作成する場合は常に、それらをこの配列に挿入する必要があります。

roadArray.push(road);

次に、hitTestを実行するときに、配列全体をループして、各道路オブジェクトに衝突がないかどうかを確認する必要があります。

public function playerHitTest( e:Event ):void
{
    for each(var road in roadArray)
    {
        if ( player.hitTestObject( road ) )
        {    
            trace("IN");
        }
    }
}
于 2012-11-05T20:40:49.343 に答える