Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 目的是帮助团结?_C#_Unity3d_Math - Fatal编程技术网

C# 目的是帮助团结?

C# 目的是帮助团结?,c#,unity3d,math,C#,Unity3d,Math,嗯,我正在做一些事情,但我现在被卡住了。正如标题所说,这是关于射击游戏的“瞄准辅助”。我使用每帧更新的俯仰偏航移动相机。像这样: void Update() { float pitch -= Input.GetAxis("Mouse Y") * sensivity; float yaw += Input.GetAxis("Mouse X") * sensivity; Vector2 rot = new Vector2(pitch, yaw); cam.tranfo

嗯,我正在做一些事情,但我现在被卡住了。正如标题所说,这是关于射击游戏的“瞄准辅助”。我使用每帧更新的俯仰偏航移动相机。像这样:

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;
}
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);
    }
}
我的AimAssit()方法如下所示:

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;
}
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);
    }
}

要清楚,“方向”与aimsassist()相同。

你所说的“在头部捕捉十字线”是什么意思?如果你是真的,你可以使用
aimTo.transform.position
,也就是匹配目标的位置,放置一个十字线,然后删除在
aimsassist
方法中移动相机的逻辑OK,这太夸张了,忽略它。不管怎样,我都尽量少写。完整的代码是巨大的。但是,如果有人通过观看最基本的部分来解决我的问题,对我来说就足够了。再说一次,你想达到什么样的效果?这两个类都在试图控制你的相机,你应该为谁能控制相机以及何时控制相机定义一个标准。例如,“鼠标控制相机,但当没有鼠标移动时,相机会被拉动以自行查看目标”…@RodrigoRodrigues这两个类都是手拉手工作的,无论输入是什么,“鼠标”、“操纵杆”等都将使用“transform.eulerAngles”移动我的相机,当我瞄准目标时,AimAssist将帮助我找到目标的位置,换句话说,“在射程内(SphereCast)”。我在上面写的是我认为它可以工作的,如果有人建议我更好的东西,它对我来说将是完美的。这个想法是。。。如果我瞄准目标,而他在我的“瞄准助攻”范围内,瞄准助攻会找到他,这只是为了更好更快地瞄准目标。所以,再一次。。。从aim assist中删除所有移动相机的逻辑,只保留跟踪和查找目标的逻辑。目标的位置可以通过找到的游戏对象的变换组件来访问