我想在按下空格键后生成具有旋转速度的块。我认为以下代码无效,因为它每次都产生一个新的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()
该怎么做,但据我所知,在这种情况下将永远无法使用。
答案 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;