Unity3d unty3d旋转播放器可站在地球上

Unity3d unty3d旋转播放器可站在地球上,unity3d,rotation,Unity3d,Rotation,我有一个玩家会“坠落”到一个行星,一个球体上,然后垂直站在上面。这颗行星控制自身的重力,使玩家旋转至直立状态,但锁定玩家的y轴 js脚本检测一个对象是否是玩家,点击,并在玩家身上执行,锁定玩家的旋转: hit.transform.LookAt(/*hit.transform.position + */transform.position); hit.transform.eulerAngles = Vector3(hit.transform.eulerAngles.x - 90, hit.tran

我有一个玩家会“坠落”到一个行星,一个球体上,然后垂直站在上面。这颗行星控制自身的重力,使玩家旋转至直立状态,但锁定玩家的y轴

js脚本检测一个对象是否是玩家,点击,并在玩家身上执行,锁定玩家的旋转:

hit.transform.LookAt(/*hit.transform.position + */transform.position);
hit.transform.eulerAngles = Vector3(hit.transform.eulerAngles.x - 90, hit.transform.eulerAngles.y, hit.transform.eulerAngles.z);

如何仅释放y轴,但不释放更多?

不完全确定要执行的操作。但是,如果gravity.js已连接到播放器,则可以执行以下操作:

hit.transform.LookAt(/*hit.transform.position + */transform.position);
hit.transform.eulerAngles = Vector3(hit.transform.eulerAngles.x - 90, this.transform.eulerAngles.y, hit.transform.eulerAngles.z);
eulerAngles y轴只是设置为当前的状态。 我不知道UnitySJavaScript,所以这是我的C#知识。你可能必须适应它。你可能想读一下:)无意冒犯

另一种方法是勾选刚体上的约束复选框(如果玩家有):


我不想锁定玩家的x和z旋转,而是根据玩家在地球上的位置对其进行局部锁定。例如,如果玩家在行星底部,他们需要倒置,但不能阻止玩家在局部y轴上旋转。这对游戏来说是至关重要的,即使是在第一时间工作。假设玩家在地球的一边,玩家会站在地球上,但是我给的代码会阻止玩家在本地y轴上旋转。嗯,我不认为这是正确的。如果你的玩家站在行星上(接触地面,头朝向云层,不管是行星的顶部还是底部),左右的注视方向将始终是它的局部y轴。那为什么要锁东西呢?你试过在Unity answers/forums/google上搜索“行星行者”或“球形重力”吗?我找到了很多有用的东西。搜索过,但使用了不同的关键字。我将尝试这些,因为它们看起来比我以前使用的更有希望。谢谢大家!@维普斯特