问题描述
我正在尝试使用 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 (将#修改为@)