Среда, 13 Ноября 2024, 03:56

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Обновление Mesh Collider в реальном времени
defGMDefeloperДата: Вторник, 25 Сентября 2018, 18:04 | Сообщение # 1
частый гость
Сейчас нет на сайте
Ну написал простой код чтоб деформировать сферу по клику мишки. Вдавливать или наоборот
Код
void DeformationMesh(Vector3 point)
    {
        MeshFilter meshFilter = GetComponent<MeshFilter>();
        Mesh mesh = meshFilter.mesh;
        Vector3[] vertices = mesh.vertices;
        Vector3 localpoint = transform.worldToLocalMatrix.MultiplyPoint(point);
        for (int i = 0; i < vertices.Length; i++)
        {
            float distance = (localpoint - vertices[i]).sqrMagnitude;
            float distanceToMidle = (vertices[i]).sqrMagnitude;
            if (distance < MAXDEFORMDISTANCE*MAXDEFORMDISTANCE && distanceToMidle < 0.36f && distanceToMidle > 0.09f)
            {
                vertices[i] = Vector3.LerpUnclamped(vertices[i], Vector3.zero, (slider.value-1)*0.01f*Mathf.Pow(1-distance/(MAXDEFORMDISTANCE*MAXDEFORMDISTANCE),3));
            }
        }
        mesh.vertices = vertices;
        MeshCollider meshCollider = GetComponent<MeshCollider>();
        meshCollider.sharedMesh = mesh;
    }

Проблема в том что сетка колайдера не обновляется. То есть я нахожу вершины которые задеваю кликом непосредственно из RaycastHit.Point. Значит мне нужно обновлять колайдер после каждого деформирования. как это можно сделать?


Сообщение отредактировал defGMDefeloper - Вторник, 25 Сентября 2018, 18:08
drcrackДата: Среда, 26 Сентября 2018, 10:41 | Сообщение # 2
старожил
Сейчас нет на сайте
Код
meshCollider.sharedMesh = null;
meshCollider.sharedMesh = mesh;

Попробуй так, если не поможет, то думаю можно просто пересоздать компонент
defGMDefeloperДата: Среда, 26 Сентября 2018, 21:11 | Сообщение # 3
частый гость
Сейчас нет на сайте
Хмм. Оч странно,но работает XD. Спасибо
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг