我正在尝试用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个像素。
谢谢!
答案 0 :(得分:1)
问题是 mario.height 值。
说明:此值不断变化。
解决方案:为mario MovieClip添加一个透明背景,略大于4个数字,或者在顶部碰撞后向mario.y添加5个像素。
例如:
mario.y = this.y - mario.height + 5;