【发布时间】:2021-12-20 04:56:33
【问题描述】:
因此,对于我的 FPS 框架,我想制作自动化的 Aim Downs Sights,即不使用动画。
问题是我必须移动:-
- 武器
- 武器 但是如果不将手臂焊接到武器上,我就无法做到这一点,但我需要将手臂焊接到 RootPart 上。
所以我买了一个钻机开始试验,我想出了一个解决方案!
- 将锚定部分作为相机(这仅用于测试目的)
- RootPart 将被焊接到 CameraPart
- 会有一个 AimPart 定义相机的位置,以便让玩家感觉他们正在瞄准目标。
我想出了这个
local AimPartPosition = (Camera.CFrame:inverse() * AimPart.CFrame).Position
CamWeld.C0 = CamWeld.C0 * CFrame.new(Vector3.new(-AimPartPosition.X,-AimPartPosition.Y,-AimPartPosition.Z))
这里,我从CameraPart得到AimPart的偏移量,然后反转位置,最后将RootPart的偏移量应用到CameraPart。(我之所以放.Position是因为我只想反转Position而不是旋转,只是为了安全起见)。
这很好用,我很自豪我做到了,但我不想使用额外的 CameraPart。我想使用 RAW CFrame 值而不是 Motor6Ds。
这显然行不通……
local AimPartPosition = (Camera.CFrame:inverse() * AimPart.CFrame).Position
RootPart.CFrame = Camera.CFrame:inverse() * RootPart.CFrame * CFrame.new(Vector3.new(-AimPartPosition.X,-AimPartPosition.Y,-AimPartPosition.Z))
因为
RootPart.CFrame ~= Camera.CFrame:inverse() * RootPart.CFrame
我有需要应用到 RootPart 的偏移量,我只是不知道如何。
【问题讨论】: