【问题标题】:How to change the orientation of the model itself?如何改变模型本身的方向?
【发布时间】:2020-05-11 00:29:54
【问题描述】:

我从 TurboSquid 下载了一个子弹模型。

但子弹指向左侧(负 X 轴)。

所以整个东西需要在 Y 轴上旋转 90 度以面向“向前”(Z 轴)。

我正在制作一个第一人称射击游戏,所以我需要子弹正对着镜头正对的位置。

所以如果我简单地设置

bullet.gameObject.transform.rotation = Camera.main.transform.rotation;

子弹将正对着“左”!

我尝试在轮换分配后进行额外的轮换,如下所示:

bullet.gameObject.transform.Rotate(Camera.main.transform.up,90);

如果视图与地平线平行,则效果很好。

但如果你向上或向下射击,它会开始面临一些奇怪的方式!

我还尝试创建一个空的父 GameObject 并将子弹作为其子对象扔进去,并设置父对象的旋转。

现在它“总是”面向“前方”(Z 轴)!无论我把相机转到哪里!

谁能教我如何解决这个问题!?

非常感谢!

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    将模型包装在父对象中,如下所示:

    然后您可以将BulletModel 旋转90 度并将移动对象的脚本附加到ParentBullet。这应该可以解决问题。

    像这样将模型和逻辑/实际对象分开通常被认为是一种很好的做法。

    【讨论】:

    • 我试过了!我不知道为什么它最终会“总是面朝前”!?
    • bullet.gameObject.transform.rotation 中确保bullet 指的是ParentBullet。如果它似乎仍然朝向错误的方向,请调整 BulletModel 对象的旋转。
    • 我将 ParentBullet 制作为预制件,并在代码中对其进行实例化,因此它应该引用 ParentBullet。但它“无论如何”都面向前方!
    【解决方案2】:

    我用一些奇怪的方法修复了它!

    我只是将其向前设置在相机的右侧,将其右侧设置为相机的背面。

    bullet.gameObject.transform.forward = Camera.main.transform.right;
    bullet.gameObject.transform.right = -Camera.main.transform.forward;
    

    但我仍然不知道为什么空父 GameObject 技巧不起作用!?

    【讨论】:

      猜你喜欢
      • 2021-03-01
      • 1970-01-01
      • 2011-05-22
      • 1970-01-01
      • 2014-03-06
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多