unity3d Unity使用多个瞄准镜向下瞄准

fivyi3re  于 2023-05-01  发布在  其他
关注(0)|答案(2)|浏览(188)

所以我想做一个瞄准瞄准瞄准的脚本,枪移动到相机的中心。我现在用的是Vector 3。在一个“正常向量”和一个“瞄准向量”之间,我通过编辑器设置。现在我有一个问题,我有很多附件多枪在我的游戏中,所以“点”,其中必须在屏幕的中心变化与每个范围连接到枪,我真的不想建立一个新的vector 3的每一个变化的枪和范围。我尝试了很多方法,比如计算屏幕中心和瞄准镜中间的距离,然后通过脚本创建一个新的vector 3,但都没有达到预期的效果。你们有什么想法或建议如何让这个工作吗?
我真的很感谢每一个回复!

4ioopgfo

4ioopgfo1#

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

public Vector3[] scopePositions;
public int scopeID;

之后,当你改变瞄准镜时,只需改变scopeID,当瞄准镜向下时,像这样使用它:

Camera.main.transform.position = Vector3.Lerp(normalPosition, scopePositions[scopeID], time);

解决方案2您可以像这样设置您的作用域结构:

作用域模型〉空的游戏对象与一些虚拟脚本。当你这样做的时候,你可以很容易地在代码中设置位置:

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

或者类似的东西

zf9nrax1

zf9nrax12#

我不知道你现在是否还想知道如何做到这一点,但在我的情况下:

  • 我有一把枪的父对象是瞄准位置游戏对象
  • 枪上有一个瞄准镜插孔
  • 示波器有一个名为(aimCenter)的套接字,它基本上是示波器透镜的中心

有了这三个信息,我可以将我的AimPostion的本地位置设置为:

x = 0(center x axis)
y = - (scopeSocket.localPosition.y + aimCenter.transform.localPosition.y)
z = whatever you want (me 0,58)

所以基本上我正在修改我的武器的父:
枪(武器的中心位置)和瞄准镜之间的高度,以及瞄准镜插座和我的透镜之间的高度。
我知道这个设置是非常精确的,但我希望它可以帮助别人。
there you have it, just without the gunAimPosition parent

相关问题