2016-11-17 2 views
1

Как я могу наложить луч с позиции объекта на другой путь X-окружной стрелки, как показано на зеленой стрелке на скриншоте? Я хочу использовать локальную точку поворота, потому что, если я вращаю Плитку, я хочу, чтобы Рэй тоже вращался.Как нарисовать луч, используя локальный стержень объекта?

enter image description here

RaycastHit hit; 

if (Physics.Raycast(transform.position, /* ? */, out hit, maxRayDis)) { 

} 

Я попытался это, но это не похоже на работу.

Vector3 testVec = new Vector3 (transform.localPosition.x, 0, 0); 

Debug.DrawLine (transform.position, testVec, Color.green); 
if (Physics.Raycast(transform.position, testVec, out hit, maxRayDis)) { 

} 

ответ

0

Вы должны установить:

testVec = -transform.right; 
+0

Он не использует ни одного луча, используя это. – N1ckGreek

+0

Используйте DrawRay() для просмотра 'Debug.DrawRay (transform.position, testVec * maxRayDis, Color.green);' – mgear

0

Вы пропустили перевод вам местный вектор в мировом пространстве. Ваш код должен быть изменен следующим образом:

Vector3 testVec = transform.TransformVector(new Vector3 (transform.localPosition.x, 0, 0)); 

Debug.DrawLine (transform.position, testVec, Color.green); 
if (Physics.Raycast(transform.position, testVec, out hit, maxRayDis)) { 

} 
+0

Получаю этот результат с помощью этого кода. Http://image.prntscr.com/image/b91f8e4abda8428bbd66bf74c202759d.png – N1ckGreek

+0

попробуйте следующее: Vector3 testVec = transform.forward; Debug.DrawLine (transform.position, transform.position + testVec, Color.green); –

+0

для краткости: Vector3 testVec = transform.position + transform.forward; –

Смежные вопросы