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 を計算します (球の外に出るため)。次に、球の外側と衝突するように、同じ距離で球に戻る光線を作成します。
Debug.Log は、textureCoord に対して x,y = 0,0 を出力し、距離に対して正しい値 0.35 を出力します。実際には球体にテクスチャを持つマテリアルがあるのに、textureCoord が常に 0,0 になるのはなぜですか?