学习开发香肠人跑酷比赛 cocos creator 游戏源码 部分代码分享解析

文章介绍了使用CocosCreator2.4.11版本的ts语言开发的一款跑酷游戏,详细讲解了DragonManager类中的动画播放、皮肤更换和骨骼动画管理方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

超级好玩香肠跑酷派对是一款趣味十足的跑酷闯关类游戏,游戏中有着海量的关卡可以去挑战,而且游戏的操作也是很简单易上手的,玩家可以通过自己的努力一步一步闯关。途中会出现各种各样的障碍物会阻碍你的前行,你需要时刻小心,凭借自己良好的操作能力去躲开他们,完成闯关还可以解锁道具奖励

超级好玩这个用cocoscreator引擎开发

版本2.4.11 语言ts

import { SingleClass } from "./SingleClass";

const { ccclass, property } = cc._decorator;
export enum AnimType {
    Dog = 1,
    Daoju = 2,
}
@ccclass
export default class DragonManager extends SingleClass {
    public armatureDisplay: dragonBones.ArmatureDisplay = null;//动画
    public armature: dragonBones.Armature;
    public factory: dragonBones.CCFactory;
    public currentAnimName: string = '';

    /**
     * 播放龙骨动画
     * @param animationName 动画名称
          http://web3incubators.com/
     * @param completeCallback 播放回调
     * @param playTimes 播放次数
     */
    public PlayDragonAnimation(animationName: string, completeCallback: any = null, playTimes: number = 1) {
        // this.armatureDisplay.armatureName = armatureName;
        this.currentAnimName = animationName;
        this.armatureDisplay.playAnimation(animationName, playTimes);
        this.armatureDisplay.addEventListener(dragonBones.EventObject.COMPLETE, completeCallback.bind(this, this.armatureDisplay.node));
    }

    /**
     * 更换龙骨皮肤
     */
    public ChangeDragonSkin(skinName: string) {
        try {
            let skinNames = ["shou1", "shou", "pigu_"];
            let skinIndexArr = {
                "default": [0, 0, 0],
                "skin_one": [1, 1, 3],
                "skin_two": [0, 0, 1],
                "skin_three": [2, 2, 2],
            };
            let currentIndexArr = skinIndexArr[skinName];
            for (var i = 0; i < skinNames.length - 1; i++) {
                var bones = this.armatureDisplay.armature().getSlot(skinNames[i]);
                bones.displayIndex = currentIndexArr[i] - 0;
                // console.log('bones****', bones, '  ', currentIndexArr[i]);
            }
            let slot = this.armatureDisplay.armature().getSlot("Armature");
            slot.displayList[0].getSlot("pigu_").displayIndex = skinIndexArr[skinName][2];
            slot.displayList[0].getSlot("yan").displayIndex = (skinName == "skin_one") ? -1 : 0;
            // console.log('slot.armature.name:', slot);
        } catch (err) {

        }
    }

    // /**删除道具动画完毕的监听 */
    // public removeDaoJuListen() {
    //     if (this.daoju_armatureDisplay)
    //         this.daoju_armatureDisplay.removeEventListener(dragonBones.EventObject.COMPLETE);
    // }

    // /**
    //  *初始化骨骼动画资源
    //  */
    // public initArmatureFile(skeletonData, textureData, texturePng) {
    //     let factory = this.getFactory;
    //     //this.armatureDisplay.getArmatureKey
    //     //factory.parseTextureAtlasData(cc.loader.loadRes(textureData), cc.loader.loadRes(texturePng));
    // }
    // /**获取骨骼工厂 */
    // public get getFactory(): dragonBones.CCFactory {
    //     return dragonBones.CCFactory.getInstance();
    // }
    /**获取动画对象 */
    // public buildArmature(armatureName): dragonBones.Armature {
    //     this.armature = this.getFactory.buildArmature(armatureName);
    //     return this.armature;
    // }
    // /**
    // * 播放动作
    // * @param action
    // * @param playNum 播放次数
    // */
    // public play(action: string, playNum: number = 1) {
    //     if (this.dog_armatureDisplay)
    //         this.dog_armatureDisplay.playAnimation(action, playNum);
    // }

    // /**
    //  * 替换动画
    //  */
    // public replaceAnim(armatureName: string) {

    // }

    // /**
    //  * 生成骨骼动画
    //  * @param node 当前的节点
    //  * @param path 龙骨地址
    //  * @param armatureName Armature名称
    //  * @param newAnimation      Animation名称
    //  * @param completeCallback  动画播放完毕的回调
    //  * @param playTimes         播放次数 -1是根据龙骨文件 0五险循环 >0是播放次数
    //  */
    // public dragonBoneAnim(node: cc.Node, path: string, armatureName: string, newAnimation: string, completeCallback, playTimes: number = 1) {
    //     let armatureDisplay = null;
    //     // if (!this.dog_armatureDisplay) {
    //     this.dog_armatureDisplay = node.getComponent(dragonBones.ArmatureDisplay);
    //     armatureDisplay = this.dog_armatureDisplay;
    //     //  }

    //     cc.loader.loadResDir(path, (err, assets) => {
    //         assets.forEach(asset => {
    //             if (asset instanceof dragonBones.DragonBonesAsset) {
    //                 armatureDisplay.dragonAsset = asset;
    //             }
    //             if (asset instanceof dragonBones.DragonBonesAtlasAsset) {
    //                 armatureDisplay.dragonAtlasAsset = asset;
    //             }
    //         });
    //         armatureDisplay.armatureName = armatureName;
    //         armatureDisplay.playAnimation(newAnimation, playTimes);
    //         armatureDisplay.addEventListener(dragonBones.EventObject.COMPLETE, completeCallback);
    //     });
    // }

    // /**
    //  * 获取当前的动画
    //  */
    // public getCurrentAnim(node: cc.Node): dragonBones.ArmatureDisplay {
    //     let armatureDisplay = node.getComponent(dragonBones.ArmatureDisplay);
    //     armatureDisplay.removeEventListener(dragonBones.EventObject.COMPLETE);
    //     return armatureDisplay;
    // }
}

代码下载地址:完整源码非逆向icon-default.png?t=N7T8https://share.weiyun.com/gSkkOSX0

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾希game

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值