2017-02-05 22 views
0

У меня есть объект игрока, и я пытаюсь использовать мышь, чтобы игрок посмотрел на позицию мыши. Это работает нормально, но когда игрок поднимается на рампу или изменяется высота, мышь raycast plane не настраивается на высоту игрока.Unity 3D Create Plane на высоте игрока

// Look input 
    Ray ray = viewCamera.ScreenPointToRay(Input.mousePosition); 
    Plane groundPlane = new Plane(Vector3.up,Vector3.zero); 
    float rayDistance; 

    if(groundPlane.Raycast(ray,out rayDistance)) { 
     Vector3 point = ray.GetPoint(rayDistance); 
     //Debug.DrawLine(ray.origin,point,Color.red); 
     controller.LookAt(point); 
    } 

Я попытался найти ответ на Google, но отсутствие результатов, похоже, указывает на то, что я задаю неправильный вопрос. Я также посмотрел документацию Unity для Plane, но я не понимаю, что я ищу. Любая помощь будет действительно оценена. Я застрял, и это остановило меня от прогресса в моей первой игре, которую я когда-либо создавал.

+0

Вы могли бы просто установить '' Y' из point' равным Y игрока перед вызовом 'LookAt'. – Abion47

+0

Спасибо за предложение, я попробовал point.y = transform.position.y; перед LookAt, и, похоже, он выполняет то же самое. Я думал, что это сработает, поскольку это, кажется, имеет смысл, но нет, и я не знаю, почему. – SystemX17

+0

Итак, просто следуя за ним, точка x, y, z основана на raycast. Я полагаю, что raycast основан на местоположении мыши, нужно также скорректировать x и z. Я считаю, что именно поэтому изменение только для y не работает. – SystemX17

ответ

0

Я просто попытался все, и следующее, казалось, работали:

Plane groundPlane = new Plane(Vector3.up,Vector3.zero); 

изменен

Plane groundPlane = new Plane(Vector3.up,transform.position);