处理本机游戏引擎中的状态

问题描述

我正在尝试使用 react-native-game-engine 和 Matter.js 构建一个简单的游戏,但我很难弄清楚如何处理状态。在我的游戏中,我希望球从左向右移动,并在与墙壁碰撞时将方向更改为 rtl。 我正在尝试使用 Matter.js 中的 collisionStart 事件并像这样调用游戏引擎的 dispatch 来实现这一点:

Matter.Events.on(engine,'collisionStart',(e) => {
  const { position } = e.pairs[0].bodyB;
    if (gameEngine && gameEngine.current) {
      if (position.x === rightWallX) {
        gameEngine.current.dispatch({ type: 'change-direction-rtl' });
      } else if (position.x === leftWallX) {
        gameEngine.current.dispatch({ type: 'change-direction-ltr' });
      }
    }
});

...

const handleEvent = ({ type }) => {
  if (type === 'change-direction-rtl') {
    setDirection(Direction.RTL); // setting react state
  } else if (type === 'change-direction-ltr') {
    setDirection(Direction.LTR); // setting react state
  }
};

...

<GameEngine
     ref={gameEngine}
     entities={createWorld()}
     systems={[Physics]}
     onEvent={handleEvent}
/>

然后我被困在如何在传递给系统数组的函数中使用这个状态。我应该在组件中声明所有 createWorld 和 systems 函数并通过闭包访问它们中的状态吗?那性能足够吗?任何帮助将不胜感激。

我想这会带来一个更普遍的问题:如何处理 react-native-game-engine 设置中的状态变化?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)