旨在协助Unity?

时间:2018-07-03 06:08:08

标签: c# unity3d math

好吧,我正在做某事,但是我现在陷入困境。正如Title所说,这是射击游戏的“目标辅助”。我使用每帧更新的俯仰偏航来移动相机。像这样:

void Update()
{
    float pitch -= Input.GetAxis("Mouse Y") * sensivity;
    float yaw += Input.GetAxis("Mouse X") * sensivity;
    Vector2 rot = new Vector2(pitch, yaw);
    cam.tranform.eulerAngles = rot;
}

我的AimAssit()方法如下:

void AimAssist(float weaponRange)
{
    RaycastHit hit;

    if (Physics.SphereCast(cam.transform.position, radiusDetection, cam.transform.forward, out hit, weaponRange, 1 << LayerMask.NameToLayer("Shootable"))
    {
        GameObject aimTo = hit.transform.gameObject;
        Vector3 direction = aimTo.transform.position - cam.transform.position;
        cam.transform.rotation = Quaternion.Slerp(cam.transform.rotation, Quaternion.LookRotation(direction), .1f);
    }
}

所以,问题是他们不能一起工作,这是一团糟。我知道其中一个使用度数,而另一个使用角度,这很令人困惑。换句话说,我需要的是将十字准线捕捉到头部,并且仍然可以用鼠标很好地移动。预先感谢。

顺便说一句,我做到了,但这没用:

 Vector2 aim = new Vector2(Quaternion.LookRotation(direction).eulerAngles.x, Quaternion.LookRotation(direction).eulerAngles.y);
 CamTransform().eulerAngles = currentRotation + (Vector2)aim;

为清楚起见,“方向”与AimAssist()相同。

0 个答案:

没有答案