【发布时间】:2022-10-04 16:00:25
【问题描述】:
我刚开始学习Unity,遇到了一些问题。
在这里,我有一个预制对象ParticleAlly,其父对象ParticleAllies。父对象自己旋转,ParticleAlly 也旋转,就像行星和卫星一样。
此外,我还想在每个ParticleAlly 离开相机后立即重新生成它。然后它们在不同的轨道上,只有相同的角速度,但在不同的位置。当它进入然后离开相机时,再做一次。
问题是,一些ParticleAlly在重新生成后直接出现在相机中间。我试图让他们在他们从外面进入相机之前不被渲染。但似乎SpriteRenderer.isvisible 只有在SpriteRenderer.enabled 为真时才为真,所以我不知道何时再次渲染它们。然后我尝试通过位置来判断,但我不知道为什么它根本不起作用。
我完全糊涂了,为此浪费了整个上午。很抱歉我的描述和术语使用不准确。
如果您能为我提供解决方案并告诉我有关Update()、渲染、旋转中的位置/本地位置等的信息,我们将不胜感激。
// in ParticleAlly
void Update() {
//Debug.Log(trans.localPosition.y);
if(trans.position.y <= globalSettings.RotationLocationY) {
Debug.Log("Under");
if(!isRefreshed) {
refresh();
}
sRender.enabled = true;
}
else {
if(sRender.isVisible) {
isRefreshed = false;
}
}
}
/// <summary>
/// Regenerate the particle
/// </summary>
void refresh() {
isRefreshed = true;
float height = Random.value * 3;
trans.localPosition = (new Vector3(0f, globalSettings.RotationLocationY - height, 0f));
//trans.RotateAround(trans.parent.localPosition, new Vector3(0f, 0f, 1f), globalSettings.getDegree() * Random.value);
trans.localRotation = Quaternion.Euler(new Vector3(0f, 0f, globalSettings.getDegree() * Random.value));
//sRender.enabled = false;
}
// in ParticleAllies
void Update() {
trans.localRotation = Quaternion.Euler(new Vector3(0f, 0f, globalSettings.getDegree()));
}
这是我第一次在这里问,标签在代码中以某种方式被破坏了?
【问题讨论】: