You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

让角色始终朝向鼠标光标:Bevy引擎旋转计算异常问题

问题:静态相机下玩家移动到屏幕角落时无法朝向光标

我尝试过多种实现方案,但我的使用场景和其他案例略有不同:采用静态相机,玩家可在屏幕内自由移动。

当玩家处于屏幕中心时,计算逻辑能正常工作:
玩家在屏幕中心

然而当玩家移动到屏幕角落(本案例为右下角)时,角色无法朝向光标。看起来计算逻辑忽略了玩家位置,仅考虑了光标相对于窗口的位置:
玩家在右下角

我的代码基于Rust语言(Bevy引擎)实现,逻辑可适配至任意语言:

let window_size = Vec2::new(window.width(), window.height());
let difference = mouse_position.extend(0.0) - window_size.extend(0.0) / 2.0 - player.translation;
let angle = difference.y.atan2(difference.x) + PI;

*transforms.get_mut(game.player.entity.unwrap()).unwrap() = Transform {
    translation: player.translation,
    rotation: Quat::from_rotation_y(angle),
    ..default()
};
  • 注1:extend(0.0) 通过添加0.0作为z分量,将Vec2转换为Vec3。
  • 注2:player.translation 是存储玩家屏幕位置的Vec3类型变量。

内容的提问来源于stack exchange,提问作者AndreFeijo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:55:14