即使检测到碰撞,马里奥也会穿过平台的顶部(闪光CS6)

时间:2017-04-11 18:58:52

标签: actionscript-3 flash-cs6

我正在尝试用flash cs6开发一个plataform游戏。我创建了一个名为Plataforma的类,其中一个名为enterFrameEvents的方法负责验证此类的平台是否与mario发生冲突。

然而,无论我做什么,它都会检测到马里奥与其顶部相撞,但马里奥穿过平台。但是当他与底部和其他方面相撞时,它不会发生。

我正在粘贴我的代码https://www.4shared.com/rar/jqa5oRGWei/AULA_6.html

的链接

在舞台上有两个蓝色平台,它们是“plataforma”符号的一部分。 Plataforma类是flash为“plataforma”符号自动生成的actionscript类。

我在这里粘贴代码

   private function enterFrameEvents(event:Event):void{ 
      if(this.hitTestObject(mario)){

        // collision with top
        if(mario.y + mario.height >= this.y &&  mario.y <= this.y &&
         mario.x + mario.width >= this.x + 5 && mario.x <= this.x + this.width - 5 ){

         _root.isJumping = false;
         _root.speedY = 0;
          mario.y = this.y - mario.height;  
      } 
     ...
   }  

我从拐角处折扣5个像素。

谢谢!

1 个答案:

答案 0 :(得分:1)

问题是 mario.height 值。

说明:此值不断变化。

解决方案:为mario MovieClip添加一个透明背景,略大于4个数字,或者在顶部碰撞后向mario.y添加5个像素。

例如:

 mario.y = this.y - mario.height + 5;