Unity瞄准多个瞄准镜

问题描述 投票:0回答:2

所以我想制作一个 Aim Down Sight 脚本,其中枪移动到相机的中心。目前,我正在使用 Vector3.Lerp 在“正常向量”和“瞄准向量”之间进行插值,这是我通过编辑器设置的。现在我遇到的问题是,我的游戏中有多支枪有很多附件,所以必须位于屏幕中央的“点”会随着枪支上的每个瞄准镜而变化,我真的不想设置一个枪支和瞄准镜的每种变体都有新的 vector3。我尝试了很多事情,比如计算屏幕中心和示波器中间之间的距离,然后通过脚本创建一个新的 vector3 离开这个距离,但没有像预期的那样工作。你们有什么想法或建议如何让它工作吗?

真的很感谢每一个回复!

c# unity3d
2个回答
0
投票

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

public Vector3[] scopePositions;
public int scopeID;

以后换瞄准镜的时候,只要换一下

scopeID
,下瞄准镜的时候,这样用:

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

解决方案 2 您可以像这样设置范围结构:

Scope 模型 > 带有一些虚拟脚本的空游戏对象。 当你拥有它时,你可以轻松地在代码中设置位置:

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

或类似的东西。


0
投票

如果你还想知道怎么做,我现在不知道,但就我而言:

  • 我有一把枪作为 AimPosition 游戏对象的父级

  • 枪有瞄准镜的插座

  • 瞄准镜有一个称为(aimCenter)的插座,它基本上是瞄准镜镜头的中心

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

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

所以基本上我正在修改我的武器的父级:

枪(武器的中心位置)和瞄准镜之间的高度 以及范围插座和我的 aimDesired 位置之间的高度,即镜头的中间。

我知道这个设置非常精确,但我希望它可以帮助别人。

there you have it, just without the gunAimPosition parent

© www.soinside.com 2019 - 2024. All rights reserved.