Как поменять ребенка с игрового объекта в Unity? - PullRequest
0 голосов
/ 23 октября 2019

Я хочу, чтобы мой игрок взял сборный пистолет, который является брошенным предметом, а затем заменил старый пистолет на новый. Текущая структура выглядит следующим образом: enter image description here

Таким образом, идея заключается в том, что мой игрок поднимает сборную на земле: enter image description here

Это то, что я пытался. Моя идея заключалась в том, чтобы создать экземпляр игрока для игрока, затем каким-то образом убрать ребенка из пистолета и поместить новое оружие в ту же позицию. Огненная точка уже дитя моего нового сборного дома. Так что мне просто нужно поменять их местами. Следующий скрипт будет добавлен к падению на земле.

public class WeaponPickUp : MonoBehaviour
{

    public GameObject launcher;

    // Start is called before the first frame update
    void Start()
    {


    }

    // Update is called once per frame
    void Update()
    {

    }

    void  OnCollisionEnter2D(Collision2D col){
         if(col.gameObject.name =="Player"){

            GameObject go = Instantiate(launcher, new Vector3(0,0,0), Quaternion.identity) as GameObject;
            go.transform.parent = GameObject.Find("Player").transform;
            Destroy(gameObject);
        }
    }


}

Есть идеи, куда идти? Буду очень признателен за любые отзывы.

Ответы [ 2 ]

3 голосов
/ 23 октября 2019

Вам не нужно находить игровой объект Player, потому что столкновение уже обнаружило его, и вы можете получить местоположение заменяемого оружия, чтобы использовать его в качестве позиции для нового оружия:

void OnCollisionEnter2D(Collision2D col)
{
    if (col.gameObject.name == "Player")
    {
        Vector3 spawnPosition = col.transform.GetChild(0).position;
        Destroy(col.transform.GetChild(0).gameObject);
        Instantiate(launcher, spawnPosition, Quaternion.identity, col.transform);
        Destroy(gameObject);
    }
}
0 голосов
/ 23 октября 2019

Прикрепите скрипт к вашему плееру. В режиме сцены отрегулируйте положение своего пистолета и сделайте готовый сборник.

  public GameObject gunPrefab;
     void  OnCollisionEnter2D(Collision2D col){
        if(col.gameObject.name =="gun"){
           Instantiate(gunPrefab, transform); //Instantiate(prefab, parent);
           Destroy(col.gameObject);
        }
}
...