Actionscript 3 ActionScript 3-阵列问题中对象的碰撞检测

Actionscript 3 ActionScript 3-阵列问题中对象的碰撞检测,actionscript-3,flash,collision-detection,Actionscript 3,Flash,Collision Detection,我正在开发一款小型flash游戏,目前正在尝试为最多4名玩家实现多人游戏。虽然1名玩家的碰撞检测效果非常好,但当添加更多玩家时,只有最后一名玩家才能与其他对象碰撞 使用trace语句,我发现从主类调用有问题的玩家的x和y坐标会返回初始的x和y位置,而不是当前的坐标(trace(players[0].x+“/”+players[0].y);),同时从player类内调用它们(trace(this.x+“/”)+this.y);)总是给出正确的值 最后一个玩家将始终返回两个类中的正确坐标。下面是主类

我正在开发一款小型flash游戏,目前正在尝试为最多4名玩家实现多人游戏。虽然1名玩家的碰撞检测效果非常好,但当添加更多玩家时,只有最后一名玩家才能与其他对象碰撞

使用trace语句,我发现从主类调用有问题的玩家的x和y坐标会返回初始的x和y位置,而不是当前的坐标(
trace(players[0].x+“/”+players[0].y);
),同时从player类内调用它们(
trace(this.x+“/”)+this.y);
)总是给出正确的值

最后一个玩家将始终返回两个类中的正确坐标。下面是主类的骨架

public class main extends MovieClip {

    public var collisionObject: Array = new Array(14);
    public var players: Array = new Array();
    private var noOfPlayers = 2;

    public function main() {
        for (var i = 0; i < noOfPlayers; i++) {
            setupPlayer(i);
            stage.addChild(players[i]);
        }
        setupCollisionObject();
        stage.addEventListener(Event.ENTER_FRAME, checkForCollision);
    }

    private function setupCollisionObject() {
      /* Determines positions of and spawns objects */ 
    }

    private function setupPlayer(playerNo) {
        switch (playerNo) {
            case 3:
                players[3] = new player(1000, 576, 180, 104, 100, 102);
            case 2:
                players[2] = new player(24, 576, 0, 73, 74, 76);
            case 1:
                players[1] = new player(1000, 384, 180, 38, 37, 39);
            case 0:
                players[0] = new player(24, 384, 0, 87, 65, 68);
        }
    }

    public function checkForCollision(e: Event) {

        trace("x: "+players[0].x+" y: "+players[0].y);
        trace("x: "+players[1].x+" y: "+players[1].y);

        for (var i in players) {
            for (var j in collisionObject) {
                if (players[i].hitTestObject(collisionObject[j])) {
                    //damage player
                }
            }
        }
    }
}
public类main扩展了MovieClip{
公共变量冲突对象:数组=新数组(14);
公共变量:数组=新数组();
私有变量noOfPlayers=2;
公共功能main(){
对于(var i=0;i

我不知道为什么会发生这种情况。

您缺少了
中断
setupPlayer()
中的开关情况下,这将导致在每次调用
setupPlayers(i)
时,除最后一次重新初始化外,所有播放器都会重新初始化


我们需要比所提供的更多的代码。你是在更新每个玩家的坐标还是只更新一个玩家的坐标?这正是答案,谢谢。有趣的是,我故意排除了他们,因为我相信我只运行了一次setupPlayer()。
private function setupPlayer(playerNo) {
    switch (playerNo) {
        case 3:
            players[3] = new player(1000, 576, 180, 104, 100, 102);
            break;
        case 2:
            players[2] = new player(24, 576, 0, 73, 74, 76);
            break;
        case 1:
            players[1] = new player(1000, 384, 180, 38, 37, 39);
            break;
        case 0:
            players[0] = new player(24, 384, 0, 87, 65, 68);
            break;
    }
}