React native react原生游戏引擎中的处理状态

React native react原生游戏引擎中的处理状态,react-native,game-engine,matter.js,React Native,Game Engine,Matter.js,我正在尝试使用react native game engine和Matter.js构建一个简单的游戏,我很难弄清楚如何处理状态。在我的游戏中,我希望球从左向右移动,在和墙发生碰撞时,将方向更改为rtl。 我试图通过Matter.js中的collisionStart事件实现这一点,并调用游戏引擎的调度,如下所示: Matter.Events.on(engine, 'collisionStart', (e) => { const { position } = e.pairs[0].body

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

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}
/>
Matter.Events.on(引擎,'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})=>{
如果(类型==‘更改方向rtl’){
setDirection(Direction.RTL);//设置反应状态
}否则,如果(类型==‘更改方向ltr’){
setDirection(Direction.LTR);//设置反应状态
}
};
...
然后我被困在如何在传递给systems数组的函数中使用这种状态。我是否应该声明组件中的所有createWorld和systems函数,并通过闭包访问其中的状态?这是否足够有效?任何帮助都将不胜感激

我想这会带来一个更普遍的问题:如何处理react原生游戏引擎设置中的状态变化