Как я могу расположить начальный положительный объект на начальном положительном и одинаковый для конечного положительного? - PullRequest
0 голосов
/ 26 апреля 2020

Мой сборный дом состоит из 3 частей. Начало матча, Куб, Конец матча:

My match prefab

Что я сделал, если щелкнуть мышью по началу матча или концу матча, он будет создан другой сборный клон. Теперь я хочу, чтобы новый клонированный префаб соединялся с начала или с конца (и начало, и конец - красная верхняя и нижняя части в матче) с другим вращением.

Например, что-то например:

Example of how it should be

Может быть -90 для Z нового матча или 90 для Z или 45, но не таким же поворотом, как в последнем матче с вы не увидите, что это будет как один на другом.

А затем те же логики c при нажатии на новое совпадение в конце поз создайте новое совпадение и т. д.

Проблема с моим скриптом теперь в том, что он создает новое совпадение в другом месте:

The problem

Это скрипт, который я использую:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Test : MonoBehaviour
{
    public GameObject matchPrefab;

    private Transform[] StartEndPos;

    // Start is called before the first frame update
    void Start()
    {
        var match = Instantiate(matchPrefab);

        StartEndPos = match.GetComponentsInChildren<Transform>();
    }

    // Update is called once per frame
    void Update()
    {
        Vector3 mousePos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0f);

        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(mousePos);
            RaycastHit hit;

            if (Physics.Raycast(ray, out hit))
            {
                if (hit.transform.tag == "Match Start" || hit.transform.tag == "Match End")
                {
                    for (int i = 0; i < StartEndPos.Length; i++)
                    {
                        if (StartEndPos[i].name == hit.transform.name)
                        {
                            var ClonedMatch = Instantiate(matchPrefab, StartEndPos[i].transform.position, Quaternion.identity);
                        }
                    }
                }
                else
                {
                    Debug.Log("Nothing there");
                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 27 апреля 2020

Я только что проверил ваш код, и, похоже, он работает как надо - по сути. Logi c может не работать, но создание экземпляров работает. Тем не менее, вы можете опубликовать изображение значений преобразования префаба Match? Возможно, ваш префаб матча не обнуляется. Убедитесь, что ваш префаб это Position (x, y, z) = (0f, 0f, 0f). Если это не так, вы получите супер странные экземпляры.

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