You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

修改SWF马里奥游戏:替换火球为锤子后仅向右发射的调试求助

解决马里奥SWF游戏锤子仅能向右发射的问题

嘿,我瞅了下你贴的代码,发现问题出在锤子的移动方向逻辑缺失上——你只调整了锤子生成时的X坐标,但没给锤子本身设置向左移动的动力!

问题分析

你当前的代码里,只根据lr变量调整了锤子的生成位置:

_loc3_._x = _X + (lr >= 0?17:-7);

这一步只是让锤子在马里奥左侧/右侧生成,但锤子的移动方向完全没跟着lr走,所以不管生成在左边还是右边,它只会按默认逻辑向右飞。

修复步骤

  1. 给锤子添加方向速度参数
    在生成锤子的代码块末尾,加上根据lr设置移动速度的代码:

    // 根据马里奥的朝向设置锤子移动速度,数值可以根据手感调整
    _loc3_.moveSpeed = lr >= 0 ? 7 : -7;
    
  2. 给锤子影片剪辑添加移动逻辑
    打开你导入的hammer影片剪辑,在它的时间轴第一帧添加帧脚本,让锤子每一帧都根据moveSpeed移动:

    onClipEvent(enterFrame) {
        // 按设置的速度移动
        this._x += this.moveSpeed;
        // 超出屏幕自动销毁,避免内存堆积
        if (this._x < -30 || this._x > _root._width + 30) {
            this.removeMovieClip();
        }
    }
    
  3. 修复代码里的变量重复声明问题
    你代码里重复声明了_loc3_变量,容易出问题,建议改成:

    var _loc3_ = _root.level.getNextHighestDepth();
    var hammer = _root.level.attachMovie("hammer","Enemy" + _loc3_,_loc3_);
    hammer._y = _Y;
    hammer._x = _X + (lr >= 0?17:-7);
    hammer.moveSpeed = lr >= 0 ? 7 : -7;
    

    hammer变量代替重复的_loc3_,代码可读性更高。

这样调整后,锤子就能根据马里奥的朝向(lr变量)向左或向右发射啦!

内容的提问来源于stack exchange,提问作者yolo

火山引擎 最新活动