J'ai deux points arbitraires V1 et V2. Je définis un rayon de V1 à V2 et je veux trouver l'endroit exact où le rayon frappe le plan. Quand je cours mon code, la position de frappe est atterrie sur la mauvaise position! Comme vous pouvez le voir la sphère verte montre la position de collision de rayon qui n'est pas alignée avec V1 et V2.
Raycast ne détecte pas le bon endroit sur l'objet
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() {
}
}
Il est très intéressant pour moi parce que lorsque je place le plan dans (0,0,5), V1 (0,0,10) et V2 (0,0, -10) il renvoie le point correct mais dans d'autres angles et placement ils ne renvoient pas les points corrects.
Pourriez-vous m'aider à résoudre le problème?