首页 > 解决方案 > 统一:全方位的重力

问题描述

我正在尝试用磁铁制作游戏。每个磁铁都有自己的磁场,可以将玩家拉向磁铁。

然后玩家应该能够在磁铁的整个侧面上行走。

不应将球员拉向中心。

现在我已经通过向磁铁增加玩家的速度来做到这一点,这很好。

磁场朝向整个区域,而不是中心

现在的问题是玩家应该用他的脚朝向磁铁旋转。现在我不知道如何根据磁铁的旋转来改变播放器的旋转。在某些情况下,这会导致播放器侧立或倒置在磁铁上。

我也在使用统一标准资产中的第三人称相机,有时当玩家旋转时,相机只能向上和向下看。为了解决这个问题,我在 World.Space 周围使用了一个旋转功能。

磁铁上的玩家

标签: c#unity3dgame-physicsphysicsgame-development

解决方案


你应该得到相对的位置,磁铁作为父母,你的玩家作为孩子。为此,您可以创建一个与玩家位置相同的不同游戏对象,并将其设置为磁铁的子对象(或者在磁铁上设置一个子对象,您可以更改其位置(绝对位置))。

一旦你完成了这个,你规范化了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);

推荐阅读