0

0

Bullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3D

php中文网

php中文网

发布时间:2016-06-07 15:49:38

|

1401人浏览过

|

来源于php中文网

原创

1.使用 Cocos 引擎建立工程,打开 cocosstudio 修改分辨率为 960*640 ,删掉背景图片 发布到vs 工程 1.打开 AppDelegate 设置分辨率,并运行 director-getOpenGLView()-setDesignResolutionSize(960,640, ResolutionPolicy :: EXACT_FIT ); 2.配置Bullet(win

1.使用cocos引擎建立工程,打开cocos studio 修改分辨率为960*640,删掉背景图片

Bullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3D

发布到vs工程Bullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3D

1.打开AppDelegate设置分辨率,并运行

 director->getOpenGLView()->setDesignResolutionSize(960, 640, ResolutionPolicy::EXACT_FIT);

2.配置Bullet(win32)到cocos2dx

首先要将bullet3-master的头文件复制到cocos\frameworks\cocos2d-x\external\Bullet;具体方法请看

如下图Bullet3之交叉编译Android 复制头文件

Bullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3D

4.将编译好的Bullet库(win32release库复制到

Cocos\frameworks\cocos2d-x\prebuilt\win32下分别更名为

BulletCollision_vs2012.lib

BulletDynamics_vs2012.lib

BulletSoftBody_vs2012.lib

LinearMath_vs2012.lib

如何得到Bullet库,这个就要去看Bullet3Hello Worldvs2012补充如何生成Bullet

5.打开刚才生成的项目的属性,选择链接器->输入->附加依赖项,输入生成的Bullet库,如图

Bullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3D

将PhysicsWorld3D类复制到classes/physics3d并添加到工程中,编译运行,成功表明配置成功,

有可能会出现error LNK2038: 检测到“RuntimeLibrary”的不匹配项MTd_StaticDebug不匹配值“MDd_DynamicDebug”

Bullet生成时的c/c++->代码生成->运行库,改为MD

 

5.测试PhysicsWorld3D

HelloWorldScene.h添加

#include "physics3d/PhysicsWorld3D.h"
public:
	void onExit();
	void update(float delta);

private:
	bool initPhysics3D();		// 初始化物理世界
	bool initCamera();		// 初始化摄像机

private:
	PhysicsWorld3D* _world;	        // 3d 物理世界
	btRigidBody* _box;		// 盒子
	cocos2d::Sprite3D* _spBox;	// 盒子模型
	cocos2d::Camera* _camera;	// 摄像机

在HelloWorld::init()

先初始化摄像机,再初始化物理世界,

关于初始化物理世界,首先创建,然后添加一个地面,再添加一个box作为测试用

bool HelloWorld::initPhysics3D()
{
	_world = PhysicsWorld3D::create();	// 创建3d物理世界
	if (_world == nullptr)
	{
		return false;
	}
	
	// 载入plane模型
	auto spPlane = Sprite3D::create("model/ground.c3b"); 
	this->addChild(spPlane);
	spPlane->setPosition3D(Vec3::ZERO);
	
	// add a plane 方向向上,位置(0,0,0), 0.5的摩擦,0.5的弹性
	_world->addPlane(btVector3(0, 1, 0), btVector3(0, 0, 0), PhysicsMaterial3D(0, 0.5, 0.5, 0));
	
	// 载入盒子模型
	_spBox = Sprite3D::create("model/box.c3b");
	this->addChild(_spBox);
	_spBox->setPosition3D(Vec3(0, 20, 0));

	// add a box
	_box = _world->addBox(btVector3(1, 1, 1), btVector3(0, 20, 0));
	_box->setUserPointer(_spBox);

	// 设置2摄像机可见
	this->setCameraMask(2);
	return true;
}

每一帧去更新物理世界,同时更新box的位置,当然可以使用MotionState去优化,这个不着急

void HelloWorld::update(float delta)
{
	static float m[16];
	_world->update(delta);
	auto trans = _box->getWorldTransform();		// 获取box的变换矩阵
	trans.getOpenGLMatrix(m);
	_spBox->setNodeToParentTransform(Mat4(m));	// 设置box模型的变换矩阵,但是getPosition3D不会得到正确位置,这个以后讨论
}

当HelloWorld退出时要销毁物理世界

void HelloWorld::onExit()
{
	Layer::onExit();

	_world->destroy();		// 销毁物理世界
	_world = nullptr;
}

当运行程序,会看到一个box从天而降,重重的摔在地上

Bullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3DBullet(Cocos2dx)之使用cocos2dx测试PhysicsWorld3D


源代码及其资源下载

相关专题

更多
C++ 高性能计算与并行编程
C++ 高性能计算与并行编程

本专题专注于 C++ 在高性能计算(HPC)与并行编程中的应用,涵盖多线程、并发数据处理、OpenMP、MPI、GPU加速等技术。通过实际案例,帮助开发者掌握 如何利用 C++ 进行大规模数据计算和并行处理,提高程序的执行效率,适应高性能计算与数据密集型应用场景。

5

2026.01.08

C++ 高性能计算与并行编程
C++ 高性能计算与并行编程

本专题专注于 C++ 在高性能计算(HPC)与并行编程中的应用,涵盖多线程、并发数据处理、OpenMP、MPI、GPU加速等技术。通过实际案例,帮助开发者掌握 如何利用 C++ 进行大规模数据计算和并行处理,提高程序的执行效率,适应高性能计算与数据密集型应用场景。

0

2026.01.08

PPT动态图表制作教程大全
PPT动态图表制作教程大全

本专题整合了PPT动态图表制作相关教程,阅读专题下面的文章了解更多详细内容。

42

2026.01.07

c++ Libcurl用法详解
c++ Libcurl用法详解

本专题整合了c++ Libcurl用法详解,阅读专题下面的文章了解更多详细内容。

0

2026.01.07

c++ Libcurl用法大全
c++ Libcurl用法大全

本专题整合了c++ Libcurl用法详解,阅读专题下面的文章了解更多详细内容。

0

2026.01.07

C++ vector用法汇总
C++ vector用法汇总

本专题整合了C++中vector的用法大全,阅读专题下面的文章了解更多详细内容。

2

2026.01.07

C++ vector用法大全
C++ vector用法大全

本专题整合了C++中vector的用法大全,阅读专题下面的文章了解更多详细内容。

0

2026.01.07

2026年漫蛙最新官网地址
2026年漫蛙最新官网地址

漫蛙官网访问入口为https://manwa.me,另提供manwa.cc、manwa.vip、manwa.site等多节点备用链接,支持跨设备同步、个性化阅读及HTTPS安全加密。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

169

2026.01.07

php做exe需要在什么样的环境
php做exe需要在什么样的环境

PHP无法真正编译为EXE,所谓打包实为将解释器、脚本及依赖库封装成自解压容器;主流方案是ExeOutputforPHP(商业、Windows)和PHPDesktop(开源、跨平台),需手动处理扩展依赖、路径适配与运行时限制。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

5

2026.01.07

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 8.2万人学习

CSS3 教程
CSS3 教程

共18课时 | 4.3万人学习

Git 教程
Git 教程

共21课时 | 2.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号