Unity:各个方向的重力

问题描述 投票:0回答:1

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

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

不应将播放器拉向中间。

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

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

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

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

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9qbVVsNi5qcGcifQ==” alt =“磁铁上的玩家”>

c# unity3d game-physics physics game-development
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.