Не удается заставить столкновения жестких тел работать в Unity3d с коробочными коллайдерами
Поэтому я использую Unity для создания игры для Android и не могу заставить работать какие-либо коллизии. Оба объекта имеют боксовые коллайдеры, и к одному прикреплен жесткий кузов. Когда я нажимаю "играть", он просто падает через пол. Поэтому я вместо этого попытался сделать кинематический объект жесткого тела и управлять его перемещением с помощью transform.Transform, а не solidbody.addforce. Затем я сделал куб перед персонажем с помощью коллайдера с проверкой "Is Trigger". Затем я прикрепил этот скрипт как к жесткому телу, так и к кубу.
#pragma strict
function OnTriggerEnter ( block : Collider){
print("BA BAM!");
Destroy(block.gameObject);
}
function Update () {
if (Input.GetKeyDown(KeyCode.Escape)) {
Application.LoadLevel("MainMenu");
}
}
но я буду перемещать персонажа прямо через блок, и ничего не произойдет!
Затем я решил создать новую пустую сцену и сделал два куба. У обоих есть боксовые коллайдеры. Я перетянул один над другим и добавил к нему физику твердого тела. Но это только проваливается через другой блок, когда я нажимаю на игру! Любая помощь будет оценена!
2 ответа
Триггеры не являются сплошными, поэтому коробка с триггером и твердым телом может провалиться сквозь твердый предмет. Обычно объект с твердым телом не должен быть настроен на срабатывание, а стационарные объемы должны быть настроены на срабатывание. Кроме того, я попробовал ваш код, и он работает правильно. Вы уверены, что этот скрипт применяется к объектам, которые сталкиваются?
Перемещение объекта с помощью функции Translate позволит телепортировать объект в новую позицию Vector3, а не плавно перемещать его.
Также проверьте, на какой физический уровень установлен каждый объект. Затем перейдите в Edit -> Physics, чтобы отредактировать, какой физический слой может сталкиваться друг с другом.
Кроме этого, я бы предположил, что это произойдет из-за какой-то ошибки в вашей установке Unity.