c# - Physics.CheckSphere(和类似的)并不总是有效
问题描述
我正在生成球体并希望它们不相交。该脚本大部分都有效,但我总是得到一些相交的球体 - 彼此靠近的一对或三个。
我已经尝试了所有的方法 - CheckSphere
, ,以及和OverlapSphere
的相同方法,尝试使用另一个球体随机化 ontriggerenter 的位置 - 没有任何帮助。box
mesh
void CreateObject(Vector3 v)
{
_myObj = Instantiate(ballPrefab, _cloneParent);
_myObj.transform.localPosition = v;
_myObj.GetComponent<MeshRenderer>().enabled = false;
SpawnedObjects.Append(_myObj);
}
SpawnedObjects = new GameObject[_amountRandomized];
_cloneParent = GameObject.FindGameObjectWithTag("SurfaceFlag").transform;
const float objectSize = 105f;
for (var i = 0; i < _amountRandomized; i++)
{
var randomizedPos = new Vector3(Random.Range(-DistanceFromCenter, DistanceFromCenter), SpawnDepth, Random.Range(-DistanceFromCenter, DistanceFromCenter));
while (Physics.CheckSphere(_cloneParent.transform.TransformPoint(randomizedPos), objectSize, 10))
{
Debug.Log(Physics.CheckSphere(_cloneParent.transform.TransformPoint(randomizedPos), objectSize, 10));
randomizedPos = new Vector3(Random.Range(-DistanceFromCenter, DistanceFromCenter), SpawnDepth, Random.Range(-DistanceFromCenter, DistanceFromCenter));
}
CreateObject(randomizedPos);
}
private void OnTriggerEnter(Collider col)
{
if (col.gameObject.CompareTag("Collectible"))
{
Debug.Log("Moving sphere");
_transform.position = new Vector3(Random.Range(-_distanceFromCenter, _distanceFromCenter), Gameplay.SpawnDepth, Random.Range(-_distanceFromCenter, _distanceFromCenter));
}
_goDown = false; //trigger to move 6f downwards with Lerp
_goUp = true; //same but upwards
_startTime = Time.time;
}
没有收到任何错误消息。
解决方案
推荐阅读
- sublimetext3 - sublime text 3中每个搜索的单独搜索结果面板?
- triggers - oracle中的表级触发器
- jython-2.7 - 获取屏幕上的像素颜色
- javascript - 如何根据 php 中的数据显示文件类型的数量?
- python - <__main__.Employee 对象位于 0x000001E32362C1F0>
- reactjs - 如何在类组件中使用 react-use-intercom 中的 useIntercom()?
- slack - 如何检索在 Slack 对话中发言的用户列表?
- html - 如何在 Visual Studio Code 中快速编辑 CSS
- javascript - sql更新语句node.js
- c++ - 尝试在 XE 中访问 RAD Studio 10.2 编译库时出现链接错误