Я пытаюсь порождать GameObject каждый раз, когда его удаляют в случайно сгенерированных местах на моей карте.
У меня есть следующий код для порождения моей еды
using UnityEngine;
public class SpawnManager : MonoBehaviour
{
public GameObject food;
private Vector3 maxSpawnLimit;
private Vector3 minSpawnLimit;
private Vector3 spawnLocation;
private Quaternion spawnRotation;
private GameObject ground;
private void Start()
{
ground = GameObject.Find("Ground");
maxSpawnLimit = ground.transform.lossyScale / 2 + new Vector3(-1, 1, -1);
minSpawnLimit = -ground.transform.lossyScale / 2 + new Vector3(1, 1, 1);
Debug.Log("Start Spawn limit " + maxSpawnLimit + minSpawnLimit);
}
public void SpawnFood()
{
spawnLocation = new Vector3(Random.Range(minSpawnLimit[0], maxSpawnLimit[0]), 0, Random.Range(minSpawnLimit[2], maxSpawnLimit[2])) + new Vector3(0, 5, 0);
spawnRotation = Quaternion.Euler(0, 0, 0);
Instantiate(food, spawnLocation, spawnRotation);
Debug.Log("Spawn Limits " + maxSpawnLimit + minSpawnLimit);
}
}
Я запускаюDebug.Log
для максимального и минимального пределов появления, когда они установлены в методе запуска, и они не меняются, хотя я сделал то же самое в методе SpawnFood, и пределы изменяются с (49, 1, 49)
, какими они должны быть, до (0, 0, 0)
после появления первой порции еды.Почему это так?
РЕДАКТИРОВАТЬ: Инспектор для объекта, к которому прикреплен SpawnManager
скрипт https://i.imgur.com/XxbupJj.png
Скрипт, показывающий обнаружение столкновений и последующий вызов метода и удаление объекта
using UnityEngine;
public class Player : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
if (other.tag == "Food")
{
Destroy(other.gameObject);
FindObjectOfType<SpawnManager>().SpawnFood();
}
}
}```