отлитая сфера выводит только центр игрового объекта

#c# #unity3d #game-physics #physics

Вопрос:

я пытаюсь создать aimbot, который с помощью приведения сферы определяет, попадает ли он во что-то с большим радиусом, и если aimbot включен, то он стреляет пулей туда, но продолжает выводить середину игрового объекта spherecast (). он вызывается в обновлении aim gameobject это представление положения, в которое должна попасть пуля, если цель находится в коде.:

 public void spherecast()
    {
        origin = gunTip.transform.position;
        direction = guntip.transform.forward;
        RaycastHit hit;
        if (Physics.SphereCast(origin,sphereradus, direction,out hit,maxDistance,whatIsenemy))
    {
        Debug.Log("I hit enemy");
        Debug.Log("position"   hit.transform.position);
        aim.transform.position = hit.transform.position;
        currentHitDistance = hit.distance;
    }
    else
    {
        currentHitDistance = maxDistance;
    }
}
 

Ответ №1:

Physics.SphereCast выводит вообще ничего подобного.

Это вы используете hit.transform.position , что, конечно, является общей точкой поворота объекта попадания.

SphereCast предоставляет вам RaycastHit множество дополнительной информации, такой как, в частности RaycastHit.point , то, что вы ищете!

 public void spherecast()
{
    origin = gunTip.transform.position;
    direction = guntip.transform.forward;

    if (Physics.SphereCast(origin, sphereradus, direction,out var hit, maxDistance, whatIsenemy))
    {
        // By passing in the hit object you can click on the log in the console 
        // and it will highlight the according object in your scene ;)
        Debug.Log($"I hit enemy "{hit.gameObject}"", hit.gameObject);

        Debug.Log($"hit position: {hit.point}", this);
        aim.transform.position = hit.point;
        currentHitDistance = hit.distance;
    }
    else
    {
        currentHitDistance = maxDistance;
    }
}
 

Ответ №2: