• spine获取骨骼位置


    time: 2015/07/23

    版本:

    /******************************************************************************
     * Spine Runtimes Software License
     * Version 2.1

    1. 在C++中添加获取骨骼的函数

    (1)SkeletonAnimation.h

    /* page@2015/07/23 Return bone point */
        virtual cocos2d::Vec2 getBonePosition(const char* boneName) const;

    (2)SkeletonAnimation.cpp

    Vec2 SkeletonAnimation::getBonePosition(const char* boneName) const
    {
        spBone *pBone = findBone(boneName);
        if (pBone)
            return cocos2d::Vec2(pBone->worldX, pBone->worldY);
        return cocos2d::Vec2(0, 0);
    }

    2. 使用tolua导出lua接口函数

    (1)打开tolua目录

    (2)把genbindings.py文件复制一份,重命名为genbindings_spine.py,修改其中一段代码为

    try:
    
            tolua_root = '%s/tools/tolua' % project_root
            output_dir = '%s/cocos/scripting/lua-bindings/auto' % project_root
    
            cmd_args = {'cocos2dx_spine.ini' : ('cocos2dx_spine', 'lua_cocos2dx_spine_auto')}
            target = 'lua'

    * 也可以不改,直接使用genbindings.py文件,只是会慢很多

    (3)cmd命令行下运行:python genbindings.py

    (4)生成的文件

    tolua_beginmodule(tolua_S,"SkeletonAnimation");
            tolua_function(tolua_S,"setStartListener",lua_cocos2dx_spine_SkeletonAnimation_setStartListener);
            tolua_function(tolua_S,"setTrackEventListener",lua_cocos2dx_spine_SkeletonAnimation_setTrackEventListener);
            tolua_function(tolua_S,"setTrackCompleteListener",lua_cocos2dx_spine_SkeletonAnimation_setTrackCompleteListener);
            tolua_function(tolua_S,"setTrackStartListener",lua_cocos2dx_spine_SkeletonAnimation_setTrackStartListener);
            tolua_function(tolua_S,"setCompleteListener",lua_cocos2dx_spine_SkeletonAnimation_setCompleteListener);
            tolua_function(tolua_S,"setTrackEndListener",lua_cocos2dx_spine_SkeletonAnimation_setTrackEndListener);
            tolua_function(tolua_S,"setEventListener",lua_cocos2dx_spine_SkeletonAnimation_setEventListener);
            tolua_function(tolua_S,"setMix",lua_cocos2dx_spine_SkeletonAnimation_setMix);
            tolua_function(tolua_S,"setEndListener",lua_cocos2dx_spine_SkeletonAnimation_setEndListener);
            tolua_function(tolua_S,"getBonePosition",lua_cocos2dx_spine_SkeletonAnimation_getBonePosition);
            tolua_function(tolua_S,"clearTracks",lua_cocos2dx_spine_SkeletonAnimation_clearTracks);
            tolua_function(tolua_S,"clearTrack",lua_cocos2dx_spine_SkeletonAnimation_clearTrack);
        tolua_endmodule(tolua_S);


    * 多了一个加红的函数

    3. 使用

    local pos = arm:getBonePosition(tbPos)
                    print("pos = ", pos.x, pos.y);


    结果:

    pos =     8.8648509979248    89.864677429199
  • 相关阅读:
    C#(64位系统) 解决"未能加载文件或程序集,或它的某一个依赖项..."
    C#匿名方法与Delegate类型转换错误
    记录C#错误日志工具
    C# 引用访问权限,很多老手都不懂
    .NET基础之自定义泛型
    C# Socket学习笔记一
    .Net垃圾收集机制—了解算法与代龄
    审计系统---堡垒机项目之环境准备
    审计系统---堡垒机项目之表结构设计
    审计系统---堡垒机python下ssh的使用
  • 原文地址:https://www.cnblogs.com/pk-run/p/4670617.html
Copyright © 2020-2023  润新知