Я пытался создать случайно расположенные объекты, которые не должны сталкиваться.Мой коллайдер, похоже, не определяет должным образом.Как мне это исправить? - PullRequest
0 голосов
/ 01 декабря 2018

enter image description here

У меня есть сборный пустой объект, который содержит вращающийся куб.Я пытался сделать технику здесь: https://answers.unity.com/questions/356438/how-to-stop-a-collider-rotating-with-the-gameobjec.html.У меня есть правильный тег, флажок onTrigger установлен.

FoodGenerator

public class FoodGenerator : MonoBehaviour {
public GameObject food;

public int foodCount;
void Start () {
    for (int i = 0; i < foodCount; i++){
        Vector3 position = new Vector3(Random.Range(-8.0f, 8.0f), 1.0f, Random.Range(-8.0f, 8.0f));
        Instantiate(food, position, Quaternion.identity);
    }
}   

}

NonRotatingCollider

public class NonRotatingCollider : MonoBehaviour {
    private void OnTriggerEnter(Collider other)
    {
        Debug.Log("Triggered", other);
        if (other.gameObject.CompareTag("Pick Up"))
        {
            Vector3 position = new Vector3(Random.Range(-8.0f, 8.0f), 1.0f, Random.Range(-8.0f, 8.0f));
            transform.position = position;
        }
    }
}

Debug.Log («Triggered») здесь даже не активируется.Что я делаю не так?

1 Ответ

0 голосов
/ 01 декабря 2018

Если вы хотите, чтобы была вызвана функция OnTriggerEnter, на коллайдере должно быть включено свойство isTrigger.Также к коллайдеру должно быть прикреплено твердое тело.Нет никаких доказательств того, что вы прикрепили Rigidbody к GameObject.Если Rigidbody уже подключен к этому GaeObject, убедитесь, что isKinematic включен , а не для обоих сталкивающихся Rigidbody.

OnTriggerEnter следует вызывать, когда ни один или только один из сталкивающихся Rigidbody не имеет isKinematic.Если у обоих сталкивающихся Rigidbody включен isKinematic, OnTriggerEnter не будет вызываться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...