【发布时间】:2015-01-24 15:30:15
【问题描述】:
我有一把带 4 个枪口的枪。每个枪口可以发射一颗子弹(因此一次可以发射 4 发子弹)。在我的场景中,我有 100 支枪,因此可以同时发射 400 发子弹。
问题是,如果枪数低于 20 则没关系,但如果我将其提高到 20 以上,一些子弹会穿过目标(一个大立方体)。如果超过 100 颗子弹,就会有大量子弹穿过立方体。
这是检查碰撞的代码:
private IEnumerator ProjectileCoroutine() {
while (Vector3.Distance(transform.position, Target.transform.position) > 5)
{
yield return null;
}
Explode();
yield break;
}
一些注意事项:
- 游戏以 49 - 68 fps 的速度运行(现场有 100 支枪)
- 我使用预制池化方法
- 以上代码运行在一个单独的协程(StartCoroutine)中
请谁能告诉我发生了什么? 我怀疑 Unity 会跳过一些帧,因为 Coroutine 与它有一些联系。
【问题讨论】:
标签: unity3d collision-detection coroutine frame-rate