动作脚本3.如何避免与背景冲突?

时间:2013-09-16 14:24:07

标签: actionscript-3 flash actionscript collision-detection collision

我正在制作简单的Flash游戏。我已经添加了与墙壁,舞台等角色的碰撞。但正如我现在所看到的,碰撞与我添加到舞台的所有对象相冲突。当我添加背景 - 角色无法移动(因为是与背景碰撞)。如何避免呢?

这是带有字符(Hero)的myCollisionList:

        var myCollisionList:CollisionList = new CollisionList(Hero);
        myCollisionList.addItem(stage1);
        myCollisionList.addItem(stage2);
        myCollisionList.addItem(stage3);

以下是将字符移动到左侧的代码的一部分。当添加背景时,我总是得到痕迹(“触摸墙!”)。怎么避免呢?

     if(left){
                                Hero.x_speed = -walkspeed;
                                setDirection(1);

                                if(myCollisionList.checkCollisions().length > 0) { // checking if is anything in collision list

// I think here is problem, but don't know how to fix It?
             if (hitTestPoint(char.x - 26, char.y+20, true)){ //checking if character touching any object (have collision with anything)

                                    trace("Touching wall!");
                                    Hero.x_speed = 0;
                                }
                                else {
                                    Hero.x_speed = 8;   
                                }}

我也试过使用HitTestObject(但如果可能,我需要使用HitTestPoint)

if (Hero.HitTestObject(stage1 || stage2 || stage3)){
.....
}

但它仅适用于第一阶段1,因为其他2不起作用。

1 个答案:

答案 0 :(得分:0)

我猜你的主类是DisplayObject,否则是

hitTestPoint(char.x - 26, char.y+20, true)

会抛出一个错误,因为它正在测试点击它自己的点。因为我猜你的背景是这个物体的孩子,所以背景的像素与点碰撞。 尝试拨打

stage1.hitTestPoint(char.x - 26, char.y+20, true)

等...

if (Hero.HitTestObject(stage1 || stage2 || stage3))

不正确,我认为您正在寻找

if (Hero.HitTestObject(stage1) || 
    Hero.HitTestObject(stage2) || 
    Hero.HitTestObject(stage3))