我尝试在 SetActive(false)之后生成具有随机位置的预制件(克隆对象)再次。
我想要什么:
在游泳者对象之后,使用预制件(克隆对象)输入触发器,
将预制件(克隆对象)设置为 SetActive(false),然后它必须在随机位置生成。
我做了什么:
Swimmer.cs <-这是在触发时使克隆对象 SetActive(false)
void OnTriggerEnter2D (Collider2D other) {
if (other.gameObject.tag == "Trash") {
other.gameObject.SetActive (false);
}
}
Trash.cs
public GameObject columnPrefab;
public int columnPoolSize = 5;
public float spawnRate = 3f;
public float columnMin = -1f;
public float columnMax = 3.5f;
private GameObject[] columns;
private int currentColumn = 0;
private Vector2 objectPoolPosition = new Vector2 (-15,-25);
private float spawnXPosition = 10f;
private float timeSinceLastSpawned;
void Start()
{
timeSinceLastSpawned = 0f;
columns = new GameObject[columnPoolSize];
for(int i = 0; i < columnPoolSize; i++)
{
columns [i] = (GameObject)Instantiate (columnPrefab, objectPoolPosition, Quaternion.identity);
}
}
void Update()
{
timeSinceLastSpawned += Time.deltaTime;
if (GameControl.instance.gameOver == false && timeSinceLastSpawned >= spawnRate) {
timeSinceLastSpawned = 0f;
float spawnYPosition = Random.Range (columnMin, columnMax);
// This part what I am using to set it active
columns [currentColumn].SetActive(true);
columns [currentColumn].transform.position = new Vector2 (spawnXPosition, spawnYPosition);
currentColumn++;
if (currentColumn >= columnPoolSize) {
currentColumn = 0;
}
}
}
我所拥有的:
预制件(克隆对象)成功生成,但位置错误(浮动在右侧)
那么,如何设置ActiveSet克隆对象并为其随机生成位置呢?谢谢
答案 0 :(得分:1)
实际上没有问题,并且游戏中的所有内容都可以正常工作。
您将“场景视图”滚动到比“游戏视图”略远的位置。您可以看到屏幕左侧的绿色海藻。看看您的“场景视图”如何显示更多的叶子?
“场景视图”仅用于Unity编辑器,您可以独立于游戏视图中相机的位置进行缩放和滚动。如果要在“游戏视图”中移动摄像机,则必须在层次结构中的“主摄像机”对象上更改摄像机参数,或者可以通过代码更新Camera.main
。