C# 统一瞄准具有多个瞄准镜的瞄准镜
所以我想制作一个瞄准向下的瞄准脚本,枪移动到摄像机的中心。目前,我正在使用Vector3.Lerp在“法线向量”和“瞄准向量”之间进行Lerp,我通过编辑器设置了这两个向量。现在我的问题是,在我的游戏中,我有很多枪的附件,所以“点”必须在屏幕的中心,随着每个枪的范围的变化而变化,我真的不想为每个枪和范围的变化设置一个新的矢量3。我尝试了很多事情,比如计算屏幕中心和范围中间之间的距离,然后通过脚本根据这个距离创建一个新的矢量,但是没有任何效果。你们有什么想法或建议如何让这个工作C# 统一瞄准具有多个瞄准镜的瞄准镜,c#,unity3d,unity5,C#,Unity3d,Unity5,所以我想制作一个瞄准向下的瞄准脚本,枪移动到摄像机的中心。目前,我正在使用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我添加了另一个解决方案。嗯。。似乎我做错了什么,因为它根本没有按预期工作。我会继续寻找另一条路。无论如何,非常感谢你的回答!我只是想知道像《鳕鱼战场》或其他射击游戏是如何做到这一点的。。。