#c# #unity3d
#c# #unity3d
Вопрос:
Я пытался создать контроллер символов с обратной кинематикой, и я использую приведения лучей для определения целевых точек для прикрепления костей, но у меня возникли некоторые проблемы с изменением информации о попадании луча.
Что именно происходит? Ну, я запускаю радиопередачу в направлении, в котором находится точка радиопередачи. Как только он попадает на землю, он устанавливает положение привязки в положение точки попадания. За исключением того факта, что положение моей точки привязки полностью отличается от положения моей точки попадания даже после радиопередачи.
public Transform[] anchors;
void RayOut()
{
RaycastHit hit; // Create Ray Instance
if (Physics.Raycast(transform.position, transform.forward, out hit)) // Launch The Instance
{
Debug.DrawLine (transform.position, hit.point);
switch (gameObject.name) // Check This Name amp; Assign Positions
{
case "TR":
anchors[0].position = hit.transform.position;
break;
case "TL":
anchors[1].position = hit.transform.position;
break;
case "BL":
anchors[2].position = hit.transform.position;
break;
case "BR":
anchors[3].position = hit.transform.position;
break;
}
}
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
RayOut();
}
Точка, в которой белая линия пересекает пол, является ожидаемой точкой, в которой должен находиться якорь, но три стрелки указывают, где он на самом деле находится.
Комментарии:
1. может быть, вы забыли что-то преобразовать?
2. @aybe Что вы имеете в виду под этим?
3. Основываясь на документах ,
point
где луч попадает в коллайдер, тогдаtransform
как это местоположение преобразования коллайдера попадания.4. @ps2goat Да, я понял это одновременно с вами! XD
Ответ №1:
Я выяснил причину, которую я использовал transform.position
, когда на самом деле это должно быть point
. (Спасибо ps2goat за то, что он также нашел его).