c# - 统一:全方位的重力
问题描述
我正在尝试用磁铁制作游戏。每个磁铁都有自己的磁场,可以将玩家拉向磁铁。
然后玩家应该能够在磁铁的整个侧面上行走。
不应将球员拉向中心。
现在我已经通过向磁铁增加玩家的速度来做到这一点,这很好。
现在的问题是玩家应该用他的脚朝向磁铁旋转。现在我不知道如何根据磁铁的旋转来改变播放器的旋转。在某些情况下,这会导致播放器侧立或倒置在磁铁上。
我也在使用统一标准资产中的第三人称相机,有时当玩家旋转时,相机只能向上和向下看。为了解决这个问题,我在 World.Space 周围使用了一个旋转功能。
解决方案
你应该得到相对的位置,磁铁作为父母,你的玩家作为孩子。为此,您可以创建一个与玩家位置相同的不同游戏对象,并将其设置为磁铁的子对象(或者在磁铁上设置一个子对象,您可以更改其位置(绝对位置))。
一旦你完成了这个,你规范化了magnetChild 的localposition 并且你让玩家lookAt(Unity 中有一个函数)这个vector + player.position。并且您必须将播放器从 x 轴旋转 90º(以使播放器的正面不是在看它,而是头部)。
我还没有尝试过,但试一试可能会奏效。就像是:
magnetChild.position = player.position;
player.LookAt(player.position + magnetChild.localPosition.normalized);
player.Rotate(90.0f, 0.0f, 0.0f);
推荐阅读
- nginx - 当路径中包含“asp”组合时,NGINX 的真正奇怪问题
- python - shutil.copystat() FileNotFoundError: [Errno 2] 没有这样的文件或目录
- javascript - 如何以角度和方式将对象传递到节点 api 后端
- django - Django rest 框架用户注册:完成电子邮件验证后更新 django 用户数据库
- performance - 随机和大量写入的工作负载是否适合 LMDB?
- html - 从 df 变量中提取 HTML 信息
- advanced-custom-fields - 在高级自定义字段中限制分类多选下拉菜单
- kotlin - 如何在 Kotlin 的 CalenderView 中更改日期的文本颜色
- c# - 使用 moq 对 Web API 控制器实际结果进行单元测试的行为不符合预期
- windows - 如何在不知道用户名的情况下在注册表中添加条目?