简介
用于游戏开发,使物体的运动更加真实,让游戏场景看起来更具交互性,比如愤怒的小鸟
效果展示
下载安装
bash
ohpm install @ohos/box2d
使用说明
typescript
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();
}
})
DD一下: 鸿蒙开发各类文档,可关注公众号<程序猿百晓生>获取。
erlang
1.OpenHarmony开发基础
2.OpenHarmony北向开发环境搭建
3.鸿蒙南向开发环境的搭建
4.鸿蒙生态应用开发白皮书V2.0 & V3.0
5.鸿蒙开发面试真题(含参考答案)
6.TypeScript入门学习手册
7.OpenHarmony 经典面试题(含参考答案)
8.OpenHarmony设备开发入门【最新版】
9.沉浸式剖析OpenHarmony源代码
10.系统定制指南
11.【OpenHarmony】Uboot 驱动加载流程
12.OpenHarmony构建系统--GN与子系统、部件、模块详解
13.ohos开机init启动流程
14.鸿蒙版性能优化指南
.......
接口说明
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: NEXT Beta1-5.0.3.806, SDK: API12 Release (5.0.0.66)
- DevEco Studio 版本: 4.1 Canary(4.1.3.317) OpenHarmony SDK:API11 (4.1.0.36)
目录结构
lua
|---- 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 # 安装使用方法
| |---- README_zh.md # 安装使用方法