3个版本
0.1.2 | 2023年11月11日 |
---|---|
0.1.1 | 2023年11月10日 |
0.1.0 | 2023年11月10日 |
#2208 in 游戏开发
29KB
98 行
一个插件,用于修复Web嵌入式Bevy应用程序中触摸输入的问题,其中触摸输入位置相对于网页视口而非画布。修复了UI元素以及读取TouchInput事件或Touches资源时的错误。
添加插件并确保在渲染Bevy应用程序的html中的canvas id与WindowPlugin和PrimaryCanvasId资源中设置的id匹配。资源中的此值默认为main-canvas
例如,在渲染Bevy应用程序的html中,指定canvas的id
<canvas id="main-canvas"></canvas>
然后您需要配置Window插件以将渲染到该ID
App::new()
.with_plugins(DefaultPlugins.set(WindowPlugin {
primary_Window: Some(Window {
canvas: Some(String::from("#main-canvas")),
..default()
}),
..default()
}))
// ...
并且如果您使用的是默认值以外的ID main-canvas
,则需要更改PrimaryCanvasId资源。
//...
.insert_resource(PrimaryCanvasId(String::from("#my-custom-id")));
//...
注意
我的测试仅限于非常基础的网页。我相当确信这不是问题,但是可能需要使用web-sys::Element::get_bounding_client_rect来计算复杂网页的准确偏移量。
如果在您的端需要额外的调整,您应使用[AdditionalTouchOffset]资源并添加所需的任何额外偏移量,它将被包含在触摸事件的偏移中。
我也不知道取出事件并将其推回的具体影响(如果有)。我保证了在偏移前后a和b队列保持不变(当然加上偏移),但事件计数将加倍。
依赖关系
~28MB
~519K SLoC