Я создаю игру и столкнулся с проблемой. Я пытаюсь создать экземпляр объекта, когда нажата кнопка «Перейти», и я пытаюсь дать экземпляру объекта случайную позицию между указанным местом. Тем не менее, моя функция Instantiate принимает только переменную «Transform», поскольку она является вторым аргументом и не принимает никаких значений Vector3 для позиции, как это обычно бывает.Unity C# - «Instantiate» принимает только «Transform», а не «Vector3» для позиции объекта-объекта
Может кто-нибудь, пожалуйста, скажите мне, почему, и каково решение этой проблемы? Это код: обратите внимание на функцию Instantiate в функции «Обновить», вот где я столкнулся с проблемой. Я хотел бы использовать Vector3 garbagePosition в качестве второго аргумента. Благодарю.
public Transform ground;
public GameObject garbage;
public float loadTime;
public int numberOfObjects;
private Queue<Transform> groundQueue;
public Vector3 startPosition;
public Vector3 nextPosition;
// Use this for initialization
void Start() {
nextPosition = startPosition;
groundQueue = new Queue<Transform>(numberOfObjects);
for(int i = 0; i<numberOfObjects; i++)
{
groundQueue.Enqueue((Transform)Instantiate(ground));
}
for(int j = 0; j<numberOfObjects; j++)
{
Recycle();
}
}
// Update is called once per frame
void Update() {
if (groundQueue.Peek().localPosition.z + 10 < PlayerScript.playerDistance)
{
Recycle();
}
if (Input.GetButtonDown("Jump"))
{
Vector3 garbagePosition = new Vector3(Random.Range(-4, 4),
0.5f,
PlayerScript.playerDistance + Random.Range(10, 20));
Instantiate(garbage, garbagePosition);
loadTime += Time.time;
}
}
private void Recycle()
{
Transform item = groundQueue.Dequeue();
item.localPosition = nextPosition;
nextPosition.z += item.localScale.z;
groundQueue.Enqueue(item);
}
}
Ааа! Я нашел решение в использовании GameObject garb = Instantiate (мусор), а затем вручную установил garb.transform.position = garbagePosition. Ваш метод тоже работает, и он правильный. – user3324792
«Я нашел решение при использовании« Что это значит? – Programmer
Просто увидел ваше редактирование. Да, это еще один способ сделать это. Мой ответ заключается в том, чтобы решить вашу проблему и почему у вас это есть. – Programmer