Почему ожидаемый результат моей радиопередачи отличается от фактического результата?

#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 за то, что он также нашел его).