Почему моя функция создания экземпляра имеет неверную позицию?C#

Место общения программистов C#
Ответить
Anonymous
 Почему моя функция создания экземпляра имеет неверную позицию?

Сообщение Anonymous »

Итак, поскольку я новичок в Unity, вернувшийся через 2 года, я пытаюсь создать Minecraft. Но так как я все забыл, хочу, чтобы игрок спавнил чанк. Итак, всякий раз, когда я нажимаю букву c. Он создаст экземпляр генератора кусков без вращения и появится в позиции игрока. Вот здесь и возникает проблема. По какой-то причине он появляется на игровом объекте, имеющем этот скрипт, а не на игроке. Вот как я создал экземпляр:

Код: Выделить всё

Instantiate(spawnPrefab, new Vector3(player.position.x, player.position.y, player.position.z), Quaternion.identity);
У меня есть переменная преобразования с именем player, и я присвоил ей игрока.
Вот весь скрипт.

Код: Выделить всё

using UnityEngine;

public class SpawnChunk : MonoBehaviour
{
public GameObject spawnPrefab;
public Transform player;

private static SpawnChunk instance;
private float spawnCooldown = 1.5f;
private float lastSpawnTime = -1f;

void Update ()
{
if (Time.time >= lastSpawnTime + spawnCooldown && Input.GetKeyDown(KeyCode.C))
{
DuplicateChunk();
lastSpawnTime = Time.time;
}
}

void Awake ()
{
if (instance != null && instance != this)
{
Destroy(this.gameObject);
return;
}
instance = this;
DontDestroyOnLoad(this.gameObject);
}

public void DuplicateChunk ()
{
if (spawnPrefab != null && player != null && Input.GetKeyDown(KeyCode.C))
{
Debug.Log("unity why do you have to make this so hard for me");
Instantiate(spawnPrefab, new Vector3(player.position.x, player.position.y, player.position.z), Quaternion.identity);
}
else
{
if (spawnPrefab == null) Debug.LogError("****Spawn Prefab is null****");
if (player == null)
{
Debug.LogError("****Player is null****");
player = GameObject.FindGameObjectWithTag("Player").transform;
}
}
}

void LateUpdate ()
{
DuplicateChunk();
}
}

Итак, когда я столкнулся с проблемой. Я был очень сбит с толку, потому что, как будто я уже назначил трансформацию игроков. Итак, я попробовал отладку. Я добавил Debug.Log(), чтобы распечатать позицию игрока. Там говорилось о фактической позиции игрока. К тому времени я уже думал, что с единством что-то не так, поэтому заглянул в сценарий глубже и попробовал показать позицию единству по-другому. Я попытался создать вектор3 и назначить этот вектор3, но это не сработало. Я даже создал новый Vector3 и назначил отдельные значения x, y и z. Тоже не работало. У меня было последнее решение. Я также попробовал найти его по тегу. И сможете ли вы это угадать? Это не сработало.


Подробнее здесь: https://stackoverflow.com/questions/791 ... t-position
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»