@Aricce

Как спроецировать объект на плоскость правильно?

В 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(на изображении с текстурой чекера) должен быть в месте серого перекрестья, но как он оказался там , где оказался я вообще не понимаю, да еще и черные лучи непонятно как себя ведут. Прилагаю два изображения как должно быть и как есть.
Помогите пожалуйста понять в чем суть и как исправить.

Как должно быть
646716ace3be3033361402.png

Как есть
646716ca72e80258132970.png
Стоит отметить что я решил проблему с помощью
Plane plane= new Plane(transform.up,transform.position);
resultObj.transform.position= plane.ClosestPointOnPlane(projectionObj.transform.position);

но хочу разобраться с ProjectOnPlane.
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы