我正在开发一款我必须投球的比赛。它必须能够与其他球碰撞(我的演示有10个)。现在,在碰撞之后,被击中的球不断移动而不是停止。
我遇到此问题的方法是启用isKinematic
一段时间,然后将其禁用。我使用带有以下代码的标签访问所有球:
GameObject[] marbles;
marbles = GameObject.FindGameObjectsWithTag ("Exit");
foreach (GameObject x in marbles) {
x.GetComponent<Rigidbody> ().isKinematic = true;
}
我的问题是这只能部分启用对象。它启用了一些对象并禁用了其余的GameObjects。这段代码有什么问题?
我的老板告诉我在所有球上放一个脚本,然后按照相同的方法停止球(isKinematic
在一段时间内是真的),但我认为如果我这会降低游戏的fps在每个gameObject上使用太多的一个脚本实例。哪种方法更好?
答案 0 :(得分:1)
根据你的陈述:
碰撞后,撞击的球继续移动而不停止,所以我对该问题的解决方案是启用isKinematic一段时间然后禁用它
我几乎没有什么问题和建议可以帮到你:
这有助于降低球速,并在一段时间后根据摩擦力让球停止。
如果您正在控制移动球的速度并且它在Update
函数中不断更新速度,它将永远不会停止。让物理学判断移动球的移动速度,方向和持续时间。