简介
用于游戏开发,使物体的运动更加真实,让游戏场景看起来更具交互性,比如愤怒的小鸟
效果展示
下载安装
ohpm install @ohos/box2d
OpenHarmony ohpm环境配置等更多内容,请参考 如何安装OpenHarmony ohpm包
使用说明
import * as box2d from '@ohos/box2d'
...
aboutToAppear() {
selectArr = [];
for (let i: number = 0; i < g_testEntries.length; ++i) {
let o = {};
o['value'] = g_testEntries[i].name;
selectArr[i] = o;//初始化数据
}
//循环调用渲染
this.init();
}
private init() {
setTimeout(inits, timeStep);
}
const inits = function (time) {
setTimeout(loop, timeStep);
}
const loop = function (time) {
setTimeout(loop, timeStep);
app.SimulationLoop(time);
}
...
//动画切换
Select(selectArr)
.selected(this.index)
.value(selectArr[this.index].value)
.font({ size: 20, weight: 200, family: 'serif', style: FontStyle.Normal })
.selectedOptionFont({ size: 30, weight: 300, family: 'serif', style: FontStyle.Normal })
.optionFont({ size: 20, weight: 200, family: 'serif', style: FontStyle.Normal })
.onSelect((index: number) => {
this.index = index;
if (app) {
app.m_test_index = index;
//加载动画
app.LoadTest();
}
})
接口说明
b2Body类接口
- 创建夹具
CreateFixture()
- 销毁夹具
DestroyFixture()
- 设置变换
SetTransform()
- 获取变换
GetTransform()
- 获取位置
GetPosition()
- 设置位置
SetPosition()
- 获取世界中心
GetWorldCenter()
- 获取本地中心
GetLocalCenter()
- 设置线性速度
SetLinearVelocity()
b2World类接口
- 设置子步长
setSubStepping()
- 设置销毁侦听器
SetDestructionListener()
- 设置接触筛选器
SetContactFilter()
- 设置接触监听
SetContactListener()
- 设置调试绘图
SetDebugDraw()
- 创建刚体
CreateBody()
- 销毁刚体
DestroyBody()
- 创建关节
CreateJoint()
- 销毁关节
DestroyJoint()
b2Contact类接口
- 重置
Reset
- 获取歧管
GetManifold
- 获取世界歧管
GetWorldManifold
- 设置切线速度
SetTangentSpeed
- 重置摩擦力
ResetFriction
- 设置摩擦力
SetFriction
- 设置是否启用
SetEnabled
- 获取夹器A
GetFixtureA
b2Shape类接口
- 光线投射
RayCast
- 获取类型
GetType
- 拷贝
Copy
- 获取孩子数量
GetChildCount
- 计算AABB
ComputeAABB
- 计算质量
ComputeMass
- 计算距离
ComputeDistance
- 克隆
clone
约束与限制
在下述版本验证通过:
-
DevEco Studio 版本: 4.1 Canary(4.1.3.317)
-
OpenHarmony SDK:API11 (4.1.0.36)
目录结构
|---- box2d
| |---- entry
| |----src
| |----main
| |----ets
| |----pages
| |----Index.ets # 效果主页面
| |----Testbed
| |----Framework
| |----DebugDraw.ets # 效果绘制具体实现
| |----FullscreenUI.ts # 全局页面初始化,是否启用粒子参数
| |----Main.ets # 效果绘制入口
| |----ParticleEmitter.ts # 粒子发射器
| |----ParticleParameter.ts # 粒子参数
| |----Test.ets # canvas相关初始化设置
| |----Tests # 所有效果具体实现
| |----Testbed.ts # 对外接口
| |---- library # box2d核心库
| |----src
| |----main
| |----ets
| |----Box2D
| |----Collision # 碰撞目录
| |----Shapes # 形状目录
| |----b2ChainShape.ts # 链条形状
| |----b2CircleShape.ts # 圆形状
| |----b2EdgeShape.ts # 边缘形状
| |----b2PolygonShape.ts # 多边形形状
| |----b2Shape.ts # 形状抽象类
| |----b2BroadPhase.ts # 广义定义
| |----b2CollideCircle.ts # 圆形碰撞
| |----b2CollideEdge.ts # 边缘碰撞
| |----b2CollidePolygon.ts # 多边形碰撞
| |----b2Collision.ts # 碰撞类
| |----b2Distance.ts # 距离类
| |----b2DynamicTree.ts # 动态树
| |----b2TimeOfImpact.ts # 影响时间
| |----Common # 通用代码:绘制、设置、定时器等
| |----b2BlockAllocator.ts # 块分配器
| |----b2Draw.ts # 绘制类
| |----b2GrowableStack.ts # 生长堆栈
| |----b2Math.ts # 数学计算类
| |----b2Settings.ts # 设置类
| |----b2StackAllocator.ts # 堆栈分配器
| |----b2Timer.ts # 计时器类
| |----Controllers # 控制器目录
| |----b2BuoyancyController.ts # 浮力控制器
| |----b2ConstantAccelController.ts # 恒定加速度控制器
| |----b2ConstantForceController.ts # 恒力控制器
| |----b2Controller.ts # 重力控制器
| |----b2GravityController.ts # 张量阻尼控制器
| |----Dynamics
| |----Contacts # 接触类目录
| |----Joints # 关节目录
| |----b2Body.ts # 刚体类
| |----b2ContactManager.ts # 接触管理类
| |----b2Fixture.ts # 夹具类
| |----b2Island.ts # 岛类
| |----b2TimeStep.ts # 时间步类
| |----b2World.ts # 世界类
| |----b2WorldCallbacks.ts # 世界回调类
| |----Particle # 粒子目录
| |----b2Particle.ts # 粒子类
| |----b2ParticleGroup.ts # 粒子群类
| |----b2ParticleSystem.ts # 粒子系统类
| |----b2StackQueue.ts # 堆栈队列类
| |----b2VoronoiDiagram.ts # 诺图类
| |----Rope # 绳索目录
| |----b2Rope.ts # 绳索
| |----Box2D.ts # 所有接口导出类
| |----box2d.umd.js # 所有接口导出实现类
| |---- README.md # 安装使用方法
为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05
《鸿蒙开发学习手册》:
如何快速入门:https://qr21.cn/FV7h05
- 基本概念
- 构建第一个ArkTS应用
- ……
开发基础知识:https://qr21.cn/FV7h05
- 应用基础知识
- 配置文件
- 应用数据管理
- 应用安全管理
- 应用隐私保护
- 三方应用调用管控机制
- 资源分类与访问
- 学习ArkTS语言
- ……
基于ArkTS 开发:https://qr21.cn/FV7h05
- Ability开发
- UI开发
- 公共事件与通知
- 窗口管理
- 媒体
- 安全
- 网络与链接
- 电话服务
- 数据管理
- 后台任务(Background Task)管理
- 设备管理
- 设备使用信息统计
- DFX
- 国际化开发
- 折叠屏系列
- ……
鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH
鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH
1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向