#c# #unity3d
Вопрос:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
public class end : MonoBehaviour
{
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "Player")
{
SceneManager.LoadScene("Level2");
}
}
}
У меня нет ошибок в коде, но он не работает. Есть какие-нибудь предложения? Объект с кодом имеет жесткое тело и коробчатый коллайдер, объект игрока имеет тег игрока, а также имеет жесткое тело и коробчатый коллайдер, сцена называется «Level2» и загружается в настройки сборки, любые предложения будут высоко оценены.
Комментарии:
1. Вы уверены, что ваш код попадает в эту строку?
2. Да, это определенно подходит к этой черте. Или мне нужно поместить ссылку на него в раздел void update (), чтобы убедиться, что он всегда работает?
3. Вы уверены, что тег является игроком без пробелов и т. Д. Та же капитализация. Это не на плеере, не так ли? Если козенис работает, и вы, кажется, уверены. Заставьте его вывести тег, на который он попадает, чтобы вы могли видеть, что происходит. Займитесь базовой отладкой
4. Как вы можете быть уверены, что этот метод вообще вызывается?
Ответ №1:
Во-первых, убедитесь, что функция вызывается в момент визуального столкновения. Прочитайте документы, чтобы проверить, соблюдены ли какие-либо условия столкновения.
Затем избегайте прямой проверки на равенство. Рассмотрите возможность использования gameObject.CompareTag(“Player”)
вместо этого, что быстрее и надежнее.
Ответ №2:
во-первых, убедитесь, что ваше столкновение работает, и тег, который вы сравниваете, также правильный.
Кроме того, убедитесь, что вы добавили сцену в настройках сборки, Если нет, перейдите в Файл > Настройки сборки, нажмите «Добавить открытую сцену» или перетащите все сцены в «Сцены в сборке».
для получения дополнительной информации см. Документы: https://docs.unity3d.com/Manual/BuildSettings.html
Комментарии:
1. используйте этот скрипт для лучшего подхода
2. github.com/Zain-ul-din/Car-Parking-Game-Code/blob/main/Scripts/…