Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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_Unity5 - Fatal编程技术网

C# 统一瞄准具有多个瞄准镜的瞄准镜

C# 统一瞄准具有多个瞄准镜的瞄准镜,c#,unity3d,unity5,C#,Unity3d,Unity5,所以我想制作一个瞄准向下的瞄准脚本,枪移动到摄像机的中心。目前,我正在使用Vector3.Lerp在“法线向量”和“瞄准向量”之间进行Lerp,我通过编辑器设置了这两个向量。现在我的问题是,在我的游戏中,我有很多枪的附件,所以“点”必须在屏幕的中心,随着每个枪的范围的变化而变化,我真的不想为每个枪和范围的变化设置一个新的矢量3。我尝试了很多事情,比如计算屏幕中心和范围中间之间的距离,然后通过脚本根据这个距离创建一个新的矢量,但是没有任何效果。你们有什么想法或建议如何让这个工作 我真的很感谢每一个

所以我想制作一个瞄准向下的瞄准脚本,枪移动到摄像机的中心。目前,我正在使用Vector3.Lerp在“法线向量”和“瞄准向量”之间进行Lerp,我通过编辑器设置了这两个向量。现在我的问题是,在我的游戏中,我有很多枪的附件,所以“点”必须在屏幕的中心,随着每个枪的范围的变化而变化,我真的不想为每个枪和范围的变化设置一个新的矢量3。我尝试了很多事情,比如计算屏幕中心和范围中间之间的距离,然后通过脚本根据这个距离创建一个新的矢量,但是没有任何效果。你们有什么想法或建议如何让这个工作


我真的很感谢每一个回复

最简单的方法是为相机设置一系列位置,并跟踪当前使用的范围

public Vector3[] scopePositions;
public int scopeID;
稍后,当您更改范围时,只需更改
scopeID
,当瞄准瞄准器时,按如下方式使用:

Camera.main.transform.position = Vector3.Lerp(normalPosition, scopePositions[scopeID], time);
解决方案2 您可以这样设置范围结构:

Camera.main.transform.position = Vector3.Lerp(normalPosition, scopePositions[scopeID], time);
范围模型>带有一些虚拟脚本的空游戏对象。 当您这样做时,您可以轻松地在代码中设置位置:

scopePosition = GetComponentInChildren<DummyComponent>().transform.position - Camera.main.transform.position;
scopePosition=getComponentChildren().transform.position-Camera.main.transform.position;

或者类似的东西。

tbh在任何情况下,范围都应该在中心,不是吗?不把它放在中心会很奇怪。。可能会发布一张图片或smtg@Ced高度可以变化,通常情况下,它应该工作得很好,但是我必须为所有枪和示波器组合设置100+向量:/I我添加了另一个解决方案。嗯。。似乎我做错了什么,因为它根本没有按预期工作。我会继续寻找另一条路。无论如何,非常感谢你的回答!我只是想知道像《鳕鱼战场》或其他射击游戏是如何做到这一点的。。。