团结:万有引力

时间:2018-11-13 11:42:25

标签: c# unity3d game-physics physics game-development

我试图用磁铁做游戏。每个磁铁都有自己的磁场,该磁场将播放器拉向磁铁。

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

不应将播放器拉向中间。

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

Magnetic field towards the whole area, not the center

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

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

Player on the magnet

1 个答案:

答案 0 :(得分:0)

您应该获得相对位置,磁铁作为父母,而您的球员作为孩子。为此,您可以创建一个与玩家位置相同的其他gameObject,并将其设置为磁铁的子代(或在磁铁上设置一个子代,以更改其位置(绝对位置))。

完成此操作后,就可以对magnetChildChild的本地化进行标准化,并使播放器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);