nativescript-tinyengine
一个小型 2D 引擎。
npm i --save nativescript-tinyengine

小型引擎

npm npm license

为 NativeScript 的小型 2D 游戏引擎。

安装

tns plugin add nativescript-tinyengine

屏幕截图

Screenshot

使用方法

首先在你的 XML 中添加一个 GridLayout

<GridLayout id="container" width="300" height="300" backgroundColor="lightgreen">

</GridLayout>

然后在你的 typescript 文件中导入所有必需的项

import { World, Entity, Vector2, OBB, CollisionResponse, Shape, Component, CircleShape, CubeShape, ImageShape } from 'nativescript-tinyengine';

现在你只需要在你的 GridLayout 上实例化一个 World 对象,然后开始使用这个库。以下是基本代码。

let container: LayoutBase = page.getViewById("container");

let world: World = new World(container, 300, 300);

let cubeEntity: Entity = new Entity(new Vector2(0, 50), new Vector2(0, 0), 45, new CubeShape(20, 20, '#FFFFFF'));
world.addEntity(cubeEntity);

setInterval(function () { world.tick(); }, 20);

文档

您可以在这里找到库的文档。

组件 / 碰撞

Component 是一个你可以实现的接口。这个接口有以下方法

  • onStart(entity: Entity) 在附加实体的第一次帧更新之前调用。
  • onUpdate(entity: Entity, deltatTime: number) 在附加实体的每个帧更新时调用。
  • onCollide(collider: Entity, collided: Entity) 当附加实体与其他实体碰撞时调用。
  • onDestroy(entity: Entity) 当附加实体被销毁时调用。
  • getClassName(): string 你需要在这个方法中返回你的类名。

组件可以通过实体类的 addComponent<T extends Component>(type: (new () => T)) 方法附加。

每个实体都有一个属性 collisionResponse,可以设置为 NONECOLLIDE。这就是如何处理碰撞。如果你想要自定义,请将碰撞响应设置为 NONE,并在组件的 onCollide(collider: Entity, collided: Entity) 方法中实现自定义逻辑。

许可证

Apache 许可证版本 2.0,2019 年 5 月