Столкновение со снарядом, в результате чего SceneManager вызывает LoadScene - PullRequest
0 голосов
/ 06 августа 2020

Заранее благодарю вас за любой ввод.

По сути, происходит следующее: когда игрок стреляет, сцена сбрасывается

То, что я интерпретирую как происходящее:

  1. Игрок стреляет лазерным лучом
  2. Префаб Laserbeam сразу же сталкивается с игроком (насколько я могу судить)
  3. SceneManager сбрасывает сцену

Я подозреваю два возможных вызывает:

  1. Либо источник моего лазерного луча заставляет созданный projectilePrefab запускать столкновение игрока в этом фрагменте кода:

    private void OnCollisionEnter2D (Collision2D collision) { SceneManager.LoadScene (0); // если коллайдер является projectile.Prefab, не запускайте этот фрагмент кода}

  2. В общем, мое столкновение с лазерным лучом не исключает игровой объект игрока:

     void Update()
     {
         if (Input.GetButtonDown("Fire1"))
         {
             var projectile = Instantiate(
                 projectilePrefab,
                 transform.position,
                 projectilePrefab.transform.rotation);
         }
     }
    

Типичные решения, вероятно, будут выглядеть следующим образом:

  1. Убедитесь, что лазерный луч исходит от игрока, чтобы они не сталкивались.

или в идеале

Коллайдер на моем плеере сможет просто исключить контакт с лазерным лучом как причину для SceneManager сбросить сцену.

Где я застрял, когда дело доходит до тестирования этих решений, является точным синтаксис. Я надеялся, что кто-то, возможно, захочет поделиться своим пониманием, которое умеет делать условные утверждения и тому подобное. Я все еще супер новичок, поэтому, хотя я могу в значительной степени понять то, что читаю и что мне показывают, я все еще застрял перед этим горбом, когда я действительно могу все это проанализировать сам.

По сути, мой идеал может выглядеть (насколько я могу судить) так: «Если коллайдер projectilePrefab, не запускайте SceneManager.LoadScene»

Ура и заранее спасибо!

...