Unity 3D Raycast не движется в правильном направлении - PullRequest
0 голосов
/ 08 марта 2019

Я написал код, который должен испускать радиопередачу из плеча игрового объекта и проходит через руку игрового объекта.это должно указывать направление, в котором находится мышь, поэтому, если мой персонаж поднимет предмет, он мог использовать этот предмет в этом направлении, то есть пистолет стреляет в этом направлении.в настоящее время у меня есть только рисование броска, чтобы отладить его, потому что бросок выходит из правильной позиции, но не проходит через руку.Я пробовал несколько итераций этого кода на основе ответов на предыдущий вопрос, но, похоже, он не работает.игра представляет собой боковой скроллер 2.5D.

    pos.x = transform.position.x;
    pos.y = transform.position.y -1.4f;
    pos1.x = shoulder.transform.position.x;
    pos1.y = shoulder.transform.position.y;
    pos1.z = 15f;
    pos.z =0f;
    RaycastHit info;
    Debug.DrawRay(pos1, pos, Color.yellow);

код находится на игровом объекте hand, он также делает странные вещи, когда я перемещаю чартер из orgin, например, переворачивает направления и вращается только наполовину и не испускаетRaycast в противоположном направлении.

1 Ответ

1 голос
/ 08 марта 2019

Начните с векторов, которые у вас были ранее:

// Hand
pos.x = transform.position.x;
pos.y = transform.position.y -1.4f;
pos.z = 0f;

// Shoulder
pos1.x = shoulder.transform.position.x;
pos1.y = shoulder.transform.position.y;
pos1.z = 15f;

Вычтите вектор руки из вектора плеча, чтобы получить расстояние (или дельту) между двумя точками.

Vector3 dir = pos1 - pos;

// For bonus point you can set the length of the ray by using dir as a unit vector
public float length;

dir = dir.normalized * length;

И, наконец, задайте положение плеча и новый вектор направления, содержащий направление и длину вашего луча, для вашей функции.

Debug.DrawRay(pos1, dir, Color.yellow);
...