Как создать игровой объект в той же позиции, где уничтожен предыдущий - PullRequest
0 голосов
/ 28 ноября 2018

У меня есть несколько пустых игровых объектов, которые служат точками порождения, которые порождают игровые объекты, и я хочу, чтобы порожденные игровые объекты были уничтожены, и создаю новый объект в той же точке порождения, если проверяемое условие верно.

У меня есть 2 отдельных скрипта, один из которых прикреплен к объектам точки возрождения, а другой - для игрового менеджера, в котором есть условие.

Условие для скрипта игрового менеджера:

public void checkword()
 {
     wordBuilded = displayer.text.ToString();

     LetterTiles[] tiles = FindObjectsOfType<LetterTiles>();

     foreach (LetterTiles item in tiles)
     {

         if (txtContents.Contains(wordBuilded))
         {
             if (item.gameObject.CompareTag("clicked"))
             {
                 Destroy(item.gameObject);
                 FindObjectOfType<letterSpawner>().refresh();
             }                                                     
         }

         else
         {
             if (item.gameObject.CompareTag("clicked"))
                 item.GetComponent<Button>().interactable = true;
         }

     }
 }

Скрипт, прикрепленный к объектам точек появления, который создает объекты

using UnityEngine;

public class letterSpawner : MonoBehaviour {

     public GameObject[] letterTiles;
     GameObject tiles;
     Vector3 scale = new Vector3(0.8f, 0.8f, 0);

     void Start () {
         refresh();
     }

     public void refresh()
     {
         int rand = Random.Range(0, letterTiles.Length);
         tiles = Instantiate(letterTiles[rand], transform.position, Quaternion.identity);
         tiles.transform.SetParent(gameObject.transform);
         tiles.transform.localScale = scale;

     }
 }

1 Ответ

0 голосов
/ 30 ноября 2018

Вы можете сделать это, внеся небольшое изменение во все, что у вас есть, сначала измените свою функцию обновления на эту

public void refresh(Vector3 position)
 {
     int rand = Random.Range(0, letterTiles.Length);
     tiles = Instantiate(letterTiles[rand], position, Quaternion.identity);
     tiles.transform.SetParent(gameObject.transform);
     tiles.transform.localScale = scale;

 }

также в том же файле добавьте еще одну функцию по умолчанию, которая вызывает ее со значением по умолчаниючто у вас есть

public void refresh()
 {
     refresh(transform.position);
 }

, а затем в вашей checkword функции

if (item.gameObject.CompareTag("clicked"))
{
    Vector3 pos = item.transform.position;
    Destroy(item.gameObject);
    FindObjectOfType<letterSpawner>().refresh(pos);
}

, которая должна сделать это для вас

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