gpt4 book ai didi

c# - 统一生成对象

转载 作者:行者123 更新时间:2023-11-30 21:28:29 24 4
gpt4 key购买 nike

我正在使用 C# 在 Unity 中编写一个小型 2D 游戏。我 build 了两个生成垂直线的障碍生成器。线条生成后,它们会向下移动。其中一个产卵器位于左上边缘,另一个位于右上边缘。目前,新对象会在一定时间后生成。但是我的目标是,例如,当在右上角生成的对象已经移动了一定距离时,在左上角边缘生成一个新对象。这可能通过对象的坐标来完成吗?

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

public class ObstacleSpawner : MonoBehaviour
{
public GameObject[] obstacles;
public List<GameObject> obstaclesToSpawn = new List <GameObject>();
int index;

void Awake()
{
InitObstacles();
}

// Start is called before the first frame update
void Start()
{
StartCoroutine (SpawnRandomObstacle ());
}

// Initialize obstacles
void InitObstacles()
{
index=0;
for(int i =0; i<obstacles.Length*3;i++){
GameObject obj = Instantiate(obstacles[index], transform.position, Quaternion.identity);
obstaclesToSpawn.Add(obj);
obstaclesToSpawn [i].SetActive (false);
index++;

if (index == obstacles.Length)
{
index= 0;
}
}
}

IEnumerator SpawnRandomObstacle()
{
//Wait a certain time
yield return new WaitForSeconds(3f);
}


//I want something like this
(if gameObject.x == -0.99){



//activate obstacles
int index = Random.Range(0, obstaclesToSpawn.Count);

while(true){
if (!obstaclesToSpawn[index].activeInHierarchy){
obstaclesToSpawn[index].SetActive(true);
obstaclesToSpawn [index].transform.position = transform.position;
break;
}else{
index = Random.Range (0, obstaclesToSpawn.Count);
}
}

StartCoroutine (SpawnRandomObstacle ());
}
}

最佳答案

据我了解,您需要在每个生成器中保存对其他生成器的引用。

public class ObstacleSpawner : MonoBehaviour
{
public ObstacleSpawner otherSpawner;
...

然后在生成器中检查第二个生成器中障碍物的位置。像这样:

...
if (otherSpawner.obstaclesToSpawn[someIndex].transform.position.x <= -0.99)
{
// Spawn new obstacle in this spawner...
...
}

关于c# - 统一生成对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56428704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com