私は2つの任意の点V1とV2を持っています。私はV1からV2までのレイを定義し、レイがその平面に当たる正確な場所を探したいと思います。 コードを実行すると、ヒットポジションが間違った位置に上がります。あなたが見ることができるように、緑色の球は、V1とV2に位置合わせされていない光線の衝突位置を示しています。
レイキャストはオブジェクト上の適切な場所を検出しません
using UnityEngine;
using System.Collections;
public class RaycastLearning : MonoBehaviour {
// Use this for initialization
Vector3 v1;
Vector3 v2;
float MoveToLeft = 5f;
void Start() {
GameObject plane = GameObject.CreatePrimitive (PrimitiveType.Plane);
plane.transform.rotation = Quaternion.AngleAxis (90f, Vector3.right);
plane.transform.position = new Vector3 (MoveToLeft, 0, 5);
v2 = new Vector3 (MoveToLeft, 0f, -10f);
v1 = new Vector3 (MoveToLeft, 0f, 10f);
GameObject SV1 = GameObject.CreatePrimitive (PrimitiveType.Sphere);
SV1.transform.position = v1;
SV1.name = "SV1";
GameObject SV2 = GameObject.CreatePrimitive (PrimitiveType.Sphere);
SV2.transform.position = v2;
SV2.name = "SV2";
RaycastHit r = new RaycastHit();
if (Physics.Raycast (v1, v2, out r, 20f)) {
GameObject sphere = GameObject.CreatePrimitive (PrimitiveType.Sphere);
sphere.transform.position = r.point;
sphere.transform.position = new Vector3 (r.point.x, 0, r.point.z);
Material MaterialCol = new Material (Shader.Find ("Diffuse"));
MaterialCol.color = Color.green;
sphere.GetComponent<Renderer>().material = MaterialCol;
sphere.transform.localScale = 0.5f * Vector3.one;
}
}
// Update is called once per frame
void Update() {
}
}
それは私が(0,0,5)に平面を配置する場合ので、私にとって非常に興味深いですV1で(0,0,10)とV2で(0,0、-10 )正しい点を返しますが、他の角度と配置では正しい点を返しません。
問題を見つけるのを手伝ってもらえますか?