在我的统一项目中,我试图实例化当玩家单击时向前移动的球体。实例化球体时,无论玩家面对哪种方式,球都始终朝相同的方向移动。我已经尽力使它向与播放器相同的方向前进,但无济于事。
如何实例化与播放器具有相同旋转度的对象?
实例化代码:
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;
}
您的代码始终沿Z轴发送对象,因为transform.position不知道对象面向哪个方向。这是与旋转向量完全不同的Vector3。要使某些东西沿相对于对象旋转的方向移动,请尝试:
transform.position += transform.forward * 9 * Time.deltaTime;
我还没有尝试过,但是每个变换都有自己的正向向量。并且由于transform同时包含旋转矢量和位置矢量,因此应该可以使用。
但是通常对于类似这样的事情,您将使用transform.forward来帮助对象的初始定位,然后使用Rigidbody.velocity使其实际移动。