Я использую raycast для определения местоположения якоря канатной дороги.Используя несколько простых вызовов отрисовки, я вижу, что канатный переход надежно создается в точке, где возвращается Raycast.Моя проблема заключается в точке возврата.Он иногда проходит через тело, возвращая точку на противоположной границе, а иногда и внутри тела.Кажется, что он постоянно терпит неудачу, то есть, если я бросаю луч, который проходит несколько раз, он продолжает проходить и возвращает ту же самую неправильную точку.Это приводит меня к мысли, что есть проблема с моими телами.Я использую конвертер TextureToBody для рассматриваемых тел.
Другая, менее важная проблема заключается в том, что мне нужно вычитать 10/64 в каждом направлении из положения моих суставов, чтобы оно точно прикреплялось.Я понятия не имею, почему это происходит.(64пикселя = 1метр - это коэффициент преобразования, который я использую)
Метод Raycast:
Private Sub castRay(startPoint As Vector2, direction As Vector2)
direction *= 25
direction.Y = (-direction.Y)
world.RayCast(Function(fixture As Fixture, point As Vector2, normal As Vector2, fraction As Single)
Dim body As Body = fixture.Body
ropeContactFixture = fixture
ropeContactPoint = point
ropeJoint = New RopeJoint(Me.body, fixture.Body, New Vector2(0, 0), point - ropeContactFixture.Body.Position - (New Vector2(10, 10) / 64))
Return 0
End Function, startPoint, startPoint + direction)
End Sub