我试图让某些类型的拾音器在给定区域内产生,虽然有些通常卡在墙内,我该怎么解决这个问题?
移动物体的问题
for (int x = 0; x < garbage.Length; x++)
{
if (x < 5)
{
garbage[x].transform.position = new Vector3(Random.Range(-33.0f, 30.0f), 2.35f, Random.Range(30.0f, -35.0f));
}
}
使用Physics.OverlapSphere修复它。感谢。
答案 0 :(得分:0)
你可以在if语句中有一个while循环,所以它就像
Scanner sc=new Scanner(System.in);
while(true){
...
if(sc.next()=='q') break; //this is if you want to quit after pressing q
...
}
答案 1 :(得分:0)
您可以尝试使用OnCollisionStay
解决此问题。如果不仔细使用,OnCollisionStay
可能会非常沉重,所以如果可以的话,你可能想要想出更好的方法。
您必须使用以下代码创建一个新脚本,您将附加到启动预制件上。
bool keepChecking = true;
void OnCollisionStay(Collision collision)
{
if(keepChecking)
{
if(collision.gameobject.tag == "Wall")
{
collision.gameobject.transform.position = new Vector3(Random.Range(-33.0f, 30.0f), 2.35f, Random.Range(30.0f, -35.0f));
}
else
{
keepChecking = false;
}
}
}
https://docs.unity3d.com/ScriptReference/Collider.OnCollisionStay.html
阅读该链接并确保您的对象具有所有要求。你的墙和Power-Up应该有碰撞器,这两个中至少有一个应该有一个刚体。这些对象都不应该是运动学的。
请告诉我这是否适合您。