对象被实例化,无法旋转

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

在我的统一项目中,我试图实例化当玩家单击时向前移动的球体。实例化球体时,无论玩家面对哪种方式,球都始终朝相同的方向移动。我已经尽力使它向与播放器相同的方向前进,但无济于事。

如何实例化与播放器具有相同旋转度的对象?

实例化代码:

            if (polyWand.activeSelf == true)
    {
        Quaternion playerRotation = Quaternion.Euler(player.transform.rotation.x, player.transform.rotation.y, player.transform.rotation.z);
        Instantiate(fireSpellPrefab, SpellLocation, playerRotation);
    }

被感染对象的行为:

void Update ()
{
    Destroy(this, 5f);
    transform.rotation = Player.transform.rotation;
    transform.position += Vector3.forward * 9 * Time.deltaTime;
}
c# unity3d
1个回答
0
投票

您的代码始终沿Z轴发送对象,因为transform.position不知道对象面向哪个方向。这是与旋转向量完全不同的Vector3。要使某些东西沿相对于对象旋转的方向移动,请尝试:

transform.position += transform.forward * 9 * Time.deltaTime;

我还没有尝试过,但是每个变换都有自己的正向向量。并且由于transform同时包含旋转矢量和位置矢量,因此应该可以使用。

但是通常对于类似这样的事情,您将使用transform.forward来帮助对象的初始定位,然后使用Rigidbody.velocity使其实际移动。

© www.soinside.com 2019 - 2024. All rights reserved.