随机移动一个对象,而不是在墙内 - Unity 5

时间:2018-06-01 13:50:22

标签: c# unity3d random collider

我试图让某些类型的拾音器在给定区域内产生,虽然有些通常卡在墙内,我该怎么解决这个问题?

移动物体的问题

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修复它。感谢。

2 个答案:

答案 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应该有碰撞器,这两个中至少有一个应该有一个刚体。这些对象都不应该是运动学的。

请告诉我这是否适合您。