В Vector3 есть метод ProjectOnPlane, судя по материалам в сети это то что мне надо, но оно в моих руках совершенно отказывается работать правильно.
[SerializeField] GameObject projectionObj;
[SerializeField] GameObject resultObj;
// Start is called before the first frame update
void Start()
{
resultObj.transform.position= Vector3.ProjectOnPlane(transform.forward, projectionObj.transform.up);
Debug.DrawRay(transform.position,transform.forward*10);
Debug.DrawRay(projectionObj.transform.position,-projectionObj.transform.up*10);
Debug.DrawRay(transform.position,resultObj.transform.position,Color.black);
Debug.DrawRay(projectionObj.transform.position,resultObj.transform.position,Color.black);
}
По идее resultObj(на изображении с текстурой чекера) должен быть в месте серого перекрестья, но как он оказался там , где оказался я вообще не понимаю, да еще и черные лучи непонятно как себя ведут. Прилагаю два изображения как должно быть и как есть.
Помогите пожалуйста понять в чем суть и как исправить.
Как должно быть
Как есть

Стоит отметить что я решил проблему с помощью
Plane plane= new Plane(transform.up,transform.position);
resultObj.transform.position= plane.ClosestPointOnPlane(projectionObj.transform.position);
но хочу разобраться с ProjectOnPlane.