Matrix4x4.TRS Как изменить вращение каждой сетки в списке Matrix4x4 с помощью raycastC#

Место общения программистов C#
Ответить
Anonymous
 Matrix4x4.TRS Как изменить вращение каждой сетки в списке Matrix4x4 с помощью raycast

Сообщение Anonymous »

Итак, у меня есть этот скрипт, в котором я использую Graphics.DrawMeshInstanced и хочу изменить вращение каждой сетки, чтобы оно соответствовало ландшафту. Проблема в том, что я не знаю, как это сделать, потому что я не могу использовать Transform.rotation для каждой сетки в списке Matrix4x4.
Вот как я выравниваю объекты «трава» с ландшафтом в другом скрипте, где я создаю экземпляры объектов травы вручную.
Ray ray = new Ray(treeSite + Vector3.up * 10.0f, Vector3.down); RaycastHit hit = new RaycastHit();
if (Physics.Raycast(ray, out hit))
{
allocatedGO.transform.rotation = Quaternion.FromToRotation(allocatedGO.transform.up, hit.normal) * allocatedGO.transform.rotation;
}

А ниже приведен сценарий, в котором я использую Graphics.DrawMeshInstanced.
Vector3 randomPos = Random.insideUnitSphere * radius;
randomPos += transform.position;

float posY = terr.SampleHeight(randomPos);
randomPos.y = posY;
Vector3 scale = new Vector3(Random.Range(1, 1.5f), Random.Range(1, 1.5f), Random.Range(1, 1.5f));

for (int i = 0; i < Instances; i++)
{

if (AddedMatricies < 1000)
{
Batches[Batches.Count - 1].Add(Matrix4x4.TRS(randomPos, Quaternion.Euler(-90, 0, 0), scale));
AddedMatricies += 1;
}
else
{
Batches.Add(new List());
AddedMatricies = 0;
}
}

foreach (var Batch in Batches)
{
for(int i = 0; i < mesh.subMeshCount; i++)
{
Graphics.DrawMeshInstanced(mesh, i, Materials, Batch);
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... list-using
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»