Cocos2d-x 3.17 正式版本发布

请问一下 我想在APP里加一个场景,场景可以用2D的 角色用3D的,会有很多动作和多套衣服。
这个用3.15.1里自带的3D能搞起来吗
会有哪些坑要填啊?

:scream:我也比较喜欢 3d ,因为 3D 比 2D 容易维护,如果后续删除 3D,真的不想升级引擎

既然普遍都是不想删的,只是个别开发者不需要,肯定不会删的

请问 大家有遇到这个问题吗?
/data/app/android-ndk-r16/sources/cxx-stl/llvm-libc++/include/cstdio:137:9: error: no member named ‘fgetpos’ in the global namespace
using ::fgetpos;
~~^
/data/app/android-ndk-r16/sources/cxx-stl/llvm-libc++/include/cstdio:139:9: error: no member named ‘fsetpos’ in the global namespace
using ::fsetpos;
~~^
[armeabi-v7a] Compile++ arm : cocos2dx_internal_static <= CCAllocatorDiagnostics.cpp
[armeabi-v7a] Compile++ arm : cocos2dx_internal_static <= CCAllocatorGlobal.cpp
[armeabi-v7a] Compile++ arm : cocos2dx_internal_static <= CCAllocatorGlobalNewDelete.cpp
[armeabi-v7a] Compile++ arm : cocos2dx_internal_static <= CCBatchCommand.cpp
2 errors generated.
make: *** [/workspace/test/frameworks/runtime-src/proj.android/app/build/intermediates/ndkBuild/release/obj/local/armeabi-v7a/objs/cocos2dx_internal_static/base/ZipUtils.o] Error 1
make: *** Waiting for unfinished jobs….

这是mac 环境下,用命令形式编译cocos2d-x lua项目,用ndk r16 会报错,ndk14c 没有问题。

3.16 用 ndk 14

3.17 用 ndk 16

这个就是cocos2d-x 3.17,使用ndk 16 就会编译不过,使用ndk 14 就没有问题。

你重新检查一下环境变量的设置吧,确认一下是不是 3.17 的项目,搭配 ndk 16。因为官方测试团队验证过的,3.17 + ndk 16 编译没问题

3.16 最新版 NDK 14 也会出问题,所以 NDK 建议退一个版本,毕竟说不准会发布一个奇怪的版本

没有新特性,不过还是升级吧

我想知道 以前的cocos compile 命令一键打包,还能用吗?

可以用,不过配置有点极端,头文件需要把C++的放在前面,不然有些编译器会报错

请问如果在cocos2d-x to creator 里面,如何获取组件的数据,比如我用creator 编辑器,创建一个node ,这个node 加载一个 collider component, 如何获取这个collider componet 里面的碰撞数据? cocos2d-x creator 有方法搞定这个事情吗?

对于 creator 中的组件与 cocos2d-x 中节点功能接近的,基本都是对应导出,比如 creator 的 Node 节点 + Label 组件,导出到 cocos2d-x 是 Node 的子类 Label。

collider 是特殊的, 由于两边不存在像 Label 这样的对应,导出后是由插件提供的 colliderManager 处理的,相关的源码在插件的 creator-luacpp-support/reader/collider 目录, 这是测试例的代码

https://github.com/minggo/cocos2d-x/blob/314ef50f712248bed79ea89a7c8a839a37bb06a3/tests/cpp-empty-test/Classes/HelloWorldScene.cpp#L84

可以用,对与 Android 来说,cocos compile 最终还是调用的 Gradle 打包的,Android Studio 那一套,移除的是 ant 编译,Eclipse 那一套。

我的意思是怎么可以直接在cocos2d-x 里面直接读取 PhysicChainCollider里面的points 数据 :grin:

这个非常有必要:joy:

@358445267 仔细看一看这里的每个头文件呗,大概扫了一下应该是这里

class PolygonCollider : public Collider
{
public:
    virtual void update() override;
    std::vector<cocos2d::Vec2> getPoints() const;

我看了,没有找到ChainCollider,不信你自己写个testcase, 看能不能做到读取points数据,肯定一个都不可以。 无论是circlecollider, 还是 boxCollider,你们没有提供接口出来

void HelloWorld::handleColliderButtonClick(cocos2d::Scene* scene)
{
auto button = utils::findChildui::Button*(scene, “collider”);
button->addClickEventListener( {
HelloWorld::repalceScene(“creator/scenes/collider/collider.ccreator”);

    // regisger call back for collision event
    auto colliderManager = HelloWorld::g_reader->getColliderManager();
    colliderManager->enableAABBDebugDraw(true);
    colliderManager->registerCollitionCallback([=](creator::Contract::CollisionType type,
                                                   creator::Collider* collider1,
                                                   creator::Collider* collider2) {
        if (type == creator::Contract::CollisionType::ENTER)
            colliderManager->enableDebugDraw(true);
        
        if (type == creator::Contract::CollisionType::EXIT)
            colliderManager->enableDebugDraw(false);
        
    }, "");
    
    auto boxCollider = utils::findChild(HelloWorld::g_currentScene, "boxcollider");
    auto polygonCollider = utils::findChild(HelloWorld::g_currentScene, "polygoncollider");
    
    auto action1 = RepeatForever::create(RotateBy::create(1, 5));
    boxCollider->runAction(action1);
    polygonCollider->runAction(action1->clone());
});

}

这段代码完全获取不到 组件, boxCollider 是一个Node , 要不你写个test case ,看能否获取到数据?

PhysicChainCollider 不是 collider 组件是 physics 组件

支持 collider

不支持 physics

对于 circlecollider, boxCollider 在 creator 配置界面,都没有 points 数据,对于 PolygonCollider 有 points 数据,有获取 points 的接口

class PolygonCollider : public Collider
{
public:
    virtual void update() override;
    std::vector<cocos2d::Vec2> getPoints() const;

用 creator 打开这个测试工程,看支持的组件 https://github.com/cocos2d/creator_to_cocos2dx/tree/master/creator_project