Почему мой Raycast не обнаруживает сетчатых коллайдеров в Unity?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Почему мой Raycast не обнаруживает сетчатых коллайдеров в Unity?

Сообщение Гость »

У меня есть код, в котором я создаю выпуклый корпус, но создаю компоненты GameObject (есть сетчатый рендеринг, сетчатый фильтр и сетчатые компоненты коллайдеров) для каждого другого лица/треугольника в моем пробирке, потому что мне нужно, чтобы каждый цвет я хочу переместить Raycast на основе щелчка клавиатуры (raycast wry the speer of h hical -in -steccast. И направление основано на каждой точке, через которую я прохожу в этом списке). Он обнаруживает сферы, но никогда не объединяется, пробовал много решений, таких как рисование Raycast на FixedUpdate, скорее, что при обновлении также попыталась поместить оба кода в одном сценарии, а также сделать все треугольники в одном и том же объекте (думал, что это может быть проблемой с обнаружением невыпуклого), но ничего не сработало. Я даже пытался сделать новый слой, который не игнорируется Raycast и все еще ничего.

Код: Выделить всё

void CreateMyMesh()
{
for (int i = 0; i < faces.Count; i++)
{
if (faces[i].points.Count == 3)
{
Vector3 directionOfTri = Vector3.Cross(
faces[i].points[1] - faces[i].points[0],
faces[i].points[2] - faces[i].points[0]
).normalized;

Vector3 centroidTri = new Vector3(
(faces[i].points[0].x + faces[i].points[1].x + faces[i].points[2].x) / 3,
(faces[i].points[0].y + faces[i].points[1].y + faces[i].points[2].y) / 3,
(faces[i].points[0].z + faces[i].points[1].z + faces[i].points[2].z) / 3
);

float sign = Vector3.Dot(directionOfTri, centroid - centroidTri);

if (sign > 0)
{
for (int j = 2; j >= 0; j--)
{
Vector3 v = new Vector3(
faces[i].points[j].x,
faces[i].points[j].y,
faces[i].points[j].z
);
int iWhich = isExist(v, tmpVec);
if (iWhich == -1)
{
tmpVec.Add(v);
tmpTriangles.Add(tmpVec.Count - 1);
}
else
{
tmpTriangles.Add(iWhich);
}
}
}
else
{
for (int j = 0; j < 3; j++)
{
Vector3 v = new Vector3(
faces[i].points[j].x,
faces[i].points[j].y,
faces[i].points[j].z
);
int iWhich = isExist(v, tmpVec);
if (iWhich == -1)
{
tmpVec.Add(v);
tmpTriangles.Add(tmpVec.Count - 1);
}
else
{
tmpTriangles.Add(iWhich);
}
}
}
}
else
{
print("Error : #of points in Face != 3");
}

GameObject newMeshObject = Instantiate(MeshObject, MeshObject.transform.position, Quaternion.identity);
newMeshObject.name = "triangle number " + i;

Mesh mesh = new Mesh();
newMeshObject.GetComponent().material.color = new Color(tmpVec[0].x, tmpVec[0].y, tmpVec[0].z, 1f);
newMeshObject.GetComponent().mesh = mesh;
newMeshObject.GetComponent().sharedMesh = mesh;
mesh.Clear();
mesh.vertices = tmpVec.ToArray();
mesh.triangles = tmpTriangles.ToArray();
mesh.RecalculateNormals();
mesh.name = "triangle mesh number " + i;

tmpVec.Clear();
tmpTriangles.Clear();
}
}
< /code>
my raycast code: < /p>
int ct = 0;

public void Raycasttt()
{
if (Input.GetKeyDown(KeyCode.UpArrow))
{
if (ct < rayyy.Count - 1)
{
ct++;
}
else
{
ct = 0;
}
}

Debug.DrawRay(transform.position, rayyy[ct] * 10, Color.yellow);

RaycastHit hit;
Vector3 Direc = (rayyy[ct] * 10 - transform.position).normalized;

if (Physics.Raycast(transform.position, Direc, out hit, Mathf.Infinity, 6))
{
Debug.Log("in raycast");
if (hit.collider != null)
{
Debug.DrawRay(transform.position, rayyy[ct] * 10 * hit.distance, Color.yellow);
Debug.Log("Did Hit");
Debug.Log("HitPosition = " + hit.collider.gameObject.transform.position);
}
Debug.Log(hit.collider.gameObject.name);
}
}
my -сетчатый объект, который я создаю:


Подробнее здесь: https://stackoverflow.com/questions/725 ... s-in-unity
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Иногда PaintGL в Qt не рисует границу OpenGL коллайдеров Bullet Physics.
    Гость » » в форуме C++
    0 Ответы
    33 Просмотры
    Последнее сообщение Гость
  • Unity Raycast проходит сквозь стены
    Anonymous » » в форуме C#
    0 Ответы
    66 Просмотры
    Последнее сообщение Anonymous
  • Проблема Raycast с точным определением хит-пойнта в игре Unity 2D
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Unity Raycast не распознает столкновение
    Anonymous » » в форуме C#
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Unity Raycast не распознает столкновение
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

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