У меня терейн разобран на составные части :
Как существенно сократить мой код подсчёта расстояния от земли до беспилотника:
void HeightToDrone() {
if(bpla!=null && heightTodrone!=null && tempGamObjParentTerrain!=null) {
Terrain[] tempTerrain = tempGamObjParentTerrain.GetComponentsInChildren<Terrain>();
Terrain terrainactive = null;
for (int t=0;t<tempTerrain.Count();t++) {
if (bpla.transform.position.x >= tempTerrain[t].GetPosition().x && bpla.transform.position.x <= tempTerrain[t].GetPosition().x + tempTerrain[t].terrainData.size.x
&& bpla.transform.position.z >= tempTerrain[t].GetPosition().z && bpla.transform.position.z <= tempTerrain[t].GetPosition().z + tempTerrain[t].terrainData.size.z)
{
terrainactive=tempTerrain[t];
}
}
if (bpla.activeSelf==true&&terrainactive) {
float dist = Vector3.Distance(bpla.transform.position, new Vector3(bpla.transform.position.x,terrainactive.SampleHeight(bpla.transform.position),bpla.transform.position.z));
heightTodrone.text = "Высота:"+dist+" м";
}
}
}
И можно ли сократить приведённые код ?
А не проще ли рейкастом?
groundLayer - LayerMask вашего террейн. В инспекторе объекта под именем tag и layer. Создайте отдельный layer.
float FindHeight (GameObject Dron, int groundLayer) {
Vector3 DronPos = Dron.transform.position;
RaycastHit hit;
if (Physics.Raycast(DronPos, Vector3.down, out hit, Mathf.Infinity, 1 << groundLayer)) {
return Vector3.Distance(DronPos, Dron.transform.InverseTransformPoint(hit.point));
} else return 0;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть основная программа, которая при определенном условии запускает второй exe'шник, который должен в свою очередь закрыть основную программу,...
Возникает из-за размера террейна(он разбит на 100 частей)Во время сборки проекта:
Подскажите пожалуйстаСоздаю новый поток Thread и запускаю его, затем я проверяю его состояние IsActive, мне нужно когда оно будет равно false снова...