这3.5我也是醉了,我说你没事乱改什么

这物理引擎好好看看,我就在body身上add了几个shape,碰撞有时候正常,有时候会出现无形的墙,有时会穿过墙。。。

还有“AppDelegate.cpp" ,又改它作甚。

我把所有shape,包括wall都设置为恢复系数1, 摩擦0,重力0, 然后你们看看,速度时快时慢。。。。

我还是继续折腾我的box2d去。。。:12:

楼主你好,可否把你截图的示例代码贴出来下。我这周会看下物理的代码,解决目前存在的几个问题

感觉物理世界和显示不符合,移动或者缩放过场景?

我只是无聊改了下源码里debugdraw的颜色跟圆形线段数量而已,这个没有影响的。

至于包围盒,不是移动或者缩放过。。。只是我随便画的几条边界,这些都不是重点。如果我只是一个圆形,可以正常模拟,多加一个方行形状,也可以正常。
但只要加入圆形形状,就会出错。

我的代码很简单,就是:

//创建包围盒
auto wall_up = Sprite::create();
auto wall_down = Sprite::create();
auto wall_left = Sprite::create();
auto wall_right = Sprite::create();
wall_up->setPosition(visibleSize.width / 2, visibleSize.height);
wall_down->setPosition(visibleSize.width / 2, 0);
wall_left->setPosition(0, visibleSize.height / 2);
wall_right->setPosition(visibleSize.width, visibleSize.height / 2);
wall_up->setPhysicsBody(PhysicsBody::createEdgeBox(Size(visibleSize.width, 0), PhysicsMaterial(0.0f, 1.0f, 0.0f)));
wall_down->setPhysicsBody(PhysicsBody::createEdgeBox(Size(visibleSize.width, 0), PhysicsMaterial(0.0f, 1.0f, 0.0f)));
wall_left->setPhysicsBody(PhysicsBody::createEdgeBox(Size(0, visibleSize.height), PhysicsMaterial(0.0f, 1.0f, 0.0f)));
wall_right->setPhysicsBody(PhysicsBody::createEdgeBox(Size(0, visibleSize.height), PhysicsMaterial(0.0f, 1.0f, 0.0f)));
this->addChild(wall_up);
this->addChild(wall_down);
this->addChild(wall_left);
this->addChild(wall_right);

// 创建一个刚体
auto ball = Sprite::create();
ball->setPosition(Vec2(visibleSize.width / 2, visibleSize.height / 2));
auto body = PhysicsBody::createBox(Size(100, 80), PhysicsMaterial(1.0f, 1.0f, 0.0f));
ball->setPhysicsBody(body);
this->addChild(ball);
body->setVelocity(Vect(1000, 100));

// 添加一个矩形shape跟一个圆形shape
auto box = PhysicsShapeBox::create(Size(100, 20), PhysicsMaterial(1.0f, 1.0f, 0.0f), Vec2(50, 50));
body->addShape(box);

auto circle = PhysicsShapeCircle::create(20, PhysicsMaterial(1.0f, 1.0f, 0.0f), Vec2(100, 0));
body->addShape(circle);

运行结果如下:
经过多次测试,无论加入什么shape,都没问题,只要加入圆形shape,就会异常。

看来还是用Box2D好些。

这位女神,你用cocos2d-x3.5可以打包android吗?
我是用cocos Framework 3.5,导入eclipse报错如下(cocosframework 3.4还是正常的):
新建项目不做任何修改也是报错如下:
building native
NDK build mode: release
NDK_TOOLCHAIN_VERSION: 4.9
running: ‘“D:\android-ndk-r10d\ndk-build” -C G:\MyCPP\ArmedCar\proj.android -j2 NDK_MODULE_PATH=D:\Cocos\frameworks/cocos2d-x-3.5;D:\Cocos\frameworks/cocos2d-x-3.5/cocos;D:\Cocos\frameworks/cocos2d-x-3.5/external NDK_TOOLCHAIN_VERSION=4.9’

Ndk build failed!
Please use cocos console instead.

Traceback (most recent call last):
File “G:/MyCPP/ArmedCar/proj.android/build_native.py”, line 43, in
build(opts.build_mode)
File “G:/MyCPP/ArmedCar/proj.android/build_native.py”, line 28, in build
raise Exception(“Build dynamic library for project " + app_android_root + " ] fails!”)
Exception: Build dynamic library for project G:\MyCPP\ArmedCar\proj.android…/ ] fails!

你从3.4换成3.5,有没有先运行根目录下的setup.py?

又下改无聊的名字、格式这些了是么?真的好烦人,就不能让用户用的熟悉,天天的秀优越感

猜测楼主的问题应该是模拟时间不是固定值导致的,楼主尝试下关闭物理模块的自动步进,使用固定的步进时间手动执行看看。
···cpp
scene->getPhysicsWorld()->setAutoStep(fasle);

_scheduler->schedule(](float dt){
scene->getPhysicsWorld()->step(0.02f);
}, this, 0.02f, false, “lambda”);
···

我也是framework3.4还正常,3.5就挂了 只能退回3.4

运行了,安装cocosFramework3.5的时候也会自动替换环境变量,我也手动setup.py过

cocosframework 3.5的build_native.py相比3.4有很大改动。我也想换回3.4,cocos store不提供下载了,你还有包吗?

按照你说的做,BUG依旧存在。。。

而且依我判断,貌似问题不是出在这里吧。

添加其他的任何shape都不会出问题,唯独添加circle shape会出现这种问题,应该是circle shape的create函数出问题。

可惜我看不懂源码,你分析分析。

我也找不到了,前两天刚被我删了。

我现在的项目demo阶段尝试了chipmunk各种坑,最后还是用box2d做了

你是用的cocos2d-x还是quick?

用的2d-x c++