Unity中如何为3D物体生成初始位置附近的随机位置?
Unity 3D物体初始位置附近生成随机位置的解决方案
问题本质:
Random.insideUnitCircle生成的是半径为1的单位圆内的随机向量,直接叠加到初始位置时,偏移范围固定为1个世界单位,你觉得位置过远,是因为没根据需求缩放这个随机向量的范围。2D平面(XZ轴)偏移实现:
把生成的2D随机向量映射到3D场景的XZ平面,再乘以自定义的偏移半径控制范围,最后叠加到初始位置:// 获取物体当前初始位置 Vector3 originalPosition = transform.position; // 自定义偏移半径,数值越小,随机位置越靠近初始点 float offsetRange = 0.5f; // 将2D随机向量转换为3D空间的XZ平面偏移量,缩放后叠加 Vector3 randomOffset = new Vector3(Random.insideUnitCircle.x, 0, Random.insideUnitCircle.y) * offsetRange; // 设置物体新位置 transform.position = originalPosition + randomOffset;3D空间(含Y轴)偏移实现:
如果需要在初始位置周围的球形空间内生成随机点,直接使用Random.insideUnitSphere并缩放范围:Vector3 originalPosition = transform.position; float offsetRange = 0.5f; Vector3 randomOffset = Random.insideUnitSphere * offsetRange; transform.position = originalPosition + randomOffset;调整技巧:修改
offsetRange的数值即可控制随机位置与初始点的距离,数值越小,生成的位置越贴近初始位置;数值越大,偏移范围越广。
内容的提问来源于stack exchange,提问作者ek.Nik
相关产品推荐
相关产品推荐

