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,对于textureCoord输出y = 0,0,对于距离输出正确的0.35值。为什么textureCoord始终是0,0,实际上我的球体上有纹理材质?
添加屏幕截图 – 2013-02-23 22:31:13
@PeterMorris是的,它有一个球**对撞**。尝试切换到网格**对撞机**。组件 - >物理 - > MeshCollider,'是'来代替。 – Jerdak 2013-02-23 22:39:11
如果您将此添加到答案中,并且还要提到材料类型需要更改为“高级”,以便可以检查“已启用读/写”,那么我会很乐意接受它。 感谢您的帮助! – 2013-02-24 19:27:08