var startPoint =
shaft.transform.position
+ shaft.transform.forward;
var ray = new Ray(
startPoint,
-shaft.transform.forward
);
RaycastHit rayCastHit;
Physics.Raycast(ray, out rayCastHit);
var textured2D = (Texture2D)discoBall.renderer.material.mainTexture;
Vector2 textureCoord = rayCastHit.textureCoord;
Debug.Log(string.Format(
"{0},{1} at distance {2}",
textureCoord.x * textured2D.width,
textureCoord.y * textured2D.height,
rayCastHit.distance
));
У меня есть шар с объектом внутри объекта «Вал». Я разрабатываю startPoint как расстояние от вала в направлении точек вала (чтобы выйти за пределы сферы). Затем я создаю луч, указывающий назад на сферу с одинаковым расстоянием, так что он сталкивается с внешней средой моей сферы.Почему Unity3D RaycastHit.textureCoord всегда 0,0?
Debug.Log выводит x, y = 0,0 для текстурыCoord и правильное значение 0,35 для расстояния. Почему textureCoord всегда 0,0, когда у меня действительно есть материал с текстурой на моей сфере?
Добавлен снимок экрана –
@PeterMorris Да, у него есть сфера ** коллайдер **. Попробуйте переключиться на коллайдер ** сетки **. Компонент-> Физика-> MeshCollider, 'Да' для замены. – Jerdak
Если вы добавите это в ответ, а также отметьте, что тип материала должен быть изменен на «Дополнительно», чтобы можно было проверить «Чтение/Запись», и я с радостью его приму. Спасибо за помощь! –