【问题标题】:Unity Rotation Thrown Off After Starting Game?开始游戏后Unity Rotation被抛出?
【发布时间】:2019-04-18 18:07:15
【问题描述】:

我在确定如何定位我的模型时遇到了很多麻烦。当我无法让我的角色沿移动方向旋转时,我注意到了这个问题。在对 LookAt() 之类的函数进行大量试验和错误之后,我意识到这是因为我的角色的 z 轴(前向矢量)没有面向角色的相同前向方向。在 Blender 中纠正这一点后,我将其导入 Unity 和 walah,z 轴与角色的方向相同。但是当我玩游戏并且动画开始时,z 轴再次指向错误的方向!知道为什么 Unity 会这样做吗?仅供参考,我在搅拌机中建模了 3d 对象。

开始游戏后(角色不面向 z 轴):

开始游戏前(角色面向z轴)

【问题讨论】:

  • 我最好的猜测是您的代码中的其他内容正在控制这一点,但您的问题太模糊了,我无法开始诊断问题尝试缩小搜索范围,提供更多详细信息,您尝试了什么,等等可能会抛出一些相关的代码
  • "Lookat" 让它这样做,所以如果你选择的点是其他人的脚,他们会向前跌倒,然后如果你旋转,他们会绕着那条偏斜线旋转。
  • 和@CoderJoe 说的一样。您还可以停用所有您自己的脚本,这些脚本会影响您的游戏对象并点击播放按钮..
  • 我已停用所有脚本,但问题仍然存在。我猜问题是动画像@Immorality 所说的那样在错误的轴上。

标签: unity3d


【解决方案1】:

如果您的场景在开始游戏时被修改,您可以假设是您创建的逻辑(可能是脚本)影响了游戏对象。

像 cmets 建议的那样,尝试禁用游戏对象上的脚本组件,看看是什么原因造成的。


有时您可能希望在您的编辑器场景中使用此逻辑,以便您的对象以游戏开始时的方式旋转,即使您正在处理场景也是如此。

想象一下,有一个自上而下的游戏,摄像机跟随玩家并始终朝向玩家旋转。当您四处移动时,您会希望此相机朝向玩家旋转,重新排列它以获得完美的角度。为此,您可以使用[ExecuteInEditMode]:

[ExecuteInEditMode]
public class LookAtPlayer {
    Transform player;

    void Update() {
        this.transform.LookAt(player);
    }
}

【讨论】:

    【解决方案2】:

    如果您在已经创建动画的同时重新导入了模型并调整了它的 X/Y/Z 轴,那么很可能您的动画使用了错误的轴。

    您可以将动画的值复制到正确的轴上,或者如果动画不是很复杂,我建议您从头开始重新创建动画。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多