Unity如何产生具有旋转速度的GameObject

时间:2019-11-04 23:01:09

标签: c# unity3d

我想在按下空格键后生成具有旋转速度的块。我认为以下代码无效,因为它每次都产生一个新的GameObject

public GameObject blockPrefab;
void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        Vector3 randomSpawnPosition = new Vector2(Random.Range(Player.screenHalfWidth, -Player.screenHalfWidth), 0);
        Vector3 randomSpawnRotation = new Vector3(0, 0, Random.Range(0, 360));
        GameObject block = Instantiate(blockPrefab, randomSpawnPosition, Quaternion.Euler(randomSpawnRotation));
        block.transform.parent = transform;

        // How do I set a rotation velocity here?
        block.transform.Rotate(new Vector3(0, 0, Random.Range(0, 30)* Time.deltaTime), Space.Self);
    }
}

我不确定所有示例都说要使用Rotate()该怎么做,但据我所知,在这种情况下将永远无法使用。

2 个答案:

答案 0 :(得分:3)

将实例化与旋转分开。两者都在同一个“ if”语句中进行。为实例化创建一个单独的脚本,为循环创建一个。将旋转脚本附加到您的“块”预制件上。

如果您要创建一个用于旋转预制件的新脚本,则下面是Rotator.cs Update()方法的示例:

//...
void Update()
{
    transform.Rotate(new Vector3(0, 0, Random.Range(0, 30)* Time.deltaTime), Space.Self);
}
//...

答案 1 :(得分:2)

如果您的积木带有刚体,则可以像这样随机旋转:

    cube.GetComponent<Rigidbody>().angularVelocity = Random.insideUnitSphere;