[音乐] 嘿伙计们，我们有很多赞助人
在我们开始这个视频之前，非常感谢布兰登
medicinka 丹尼尔·利奇布洛，卡尔·比鲁根，欧文·鲍斯，克里斯蒂安
如果我读错了你们的名字，eberhard 和 anthony casanova 表示歉意
非常感谢您的支持，非常感谢你们
我希望你们都喜欢视频，大家好，欢迎回来，我们要去
在此视频中结束我们对系统的锁定
所以我们要做的第一件事就是让我们的玩家扫射呃
当我们真正锁定并让我们的玩家转身时
朝着呃我们锁定的目标，所以我继续添加这些
动画在这里呃进入我的运动，我们在这里
跑步和扫射我有一大堆这些
扫射左直右等所以我只是要进入
动画师并向您展示如何设置这些我不会通过它，因为我们已经
之前用我们的运动完成了这个，所以你可以在这里看到我已经创建了一些
更多添加我的混合树，你可以看看位置
x 位置 y 和我刚刚呃掉了一堆
这些跑来跑去左右，呃，如果我
将我的垂直移动到这里并移动我的
水平你会看到这个角色会
扫射呃取决于水平值
所以呃让我们去我们的输入处理程序我想这是我们称之为我们的
动画师 我们更新动画师的值 让我们看看移动输入 好吧 不，不是
在这里，我将继续重命名它
无论如何，因为它应该处理移动输入，这让我感到困扰，不要
知道为什么我把那个移动输入命名为好的所以接下来让我们去这里
玩家运动，因为那是它必须在的地方
是的，在这里它说动画处理程序
点更新动画师值我们要说如果和
实际上，如果输入处理程序点锁定标志
那么我们想做一件事，否则我们想做另一件事
所以我只想把别的放在这里，我们现在就复制这个
我们只是把它贴在这里然后我要复制
这又不知道为什么我再次强调它
把它贴在这里，我们要改变呃这一小行代码
在这里，如果我们被锁定，我们想要
说输入处理程序点垂直和输入处理程序点水平所以如果
我们被锁定在我们同时使用这两个值
如果我们不是，我们只使用一个，所以让我们保存它
现在我们也想说嗯嗯
如果输入 handler.lock on 标志和输入处理程序
点冲刺标志不正确，因为当你冲刺你的球员时
不会扫射你会破坏扫射
和冲刺一样，就好像你在滚动一样，你会滚开，你会
实际上，我们接下来不会滚向目标
必须旋转我们的播放器，所以让我们过去处理
旋转，我们要说如果输入处理程序点冲刺标志 whoops
那个锁在旗子上抱歉，呃，那我们要做一件事，如果不是，我们
要做另一个非常简单的事情，这就是
如果我们没有被锁定，我们就会这样做，所以让我们复制它并粘贴到那里
我要说 n 和
输入处理程序点哦，我的天哪自动完成
点冲刺标志等于假
现在我们要说向量 3
天哪，我今天无法输入目标方向
等于 vector3 点零
我要说目标方向等于
相机变换我们还没有添加这个呃，因为我们没有
相机处理程序是一个我们要做的变量
相机变换前进时间
输入处理程序点垂直，然后我们要说
目标方向加等于
相机变换点右时间输入处理程序
水平点
我要说 target direction.normalize 所以这应该看起来
到目前为止你很熟悉没有什么特别的
target direction.y 等于 0 我们不想要任何旋转 y 然后
我们要说如果目标方向等于向量 3.0 我们就要去
说目标方向等于变换
点向前我们要说四元数
目标旋转的 tr 等于四元数点
看我们的目标方向之间的旋转
那么我们要说四元数目标旋转等于
四元数点slurp所以但我们要旋转
从我们的变换旋转，所以我们将从右旋转
现在朝着我们新的目标轮换
呃我们目标的方向，我们将通过
旋转速度乘以时间点增量时间很酷好吧哇只是在这里我一分钟
实际上倒退了一秒钟
transform.rotation 等于目标旋转 um 所以
我们实际上需要在这里再做一个 if 语句
但首先让我们添加那个相机处理程序所以相机处理程序
我只是要在唤醒相机处理程序上调用它等于找到类型的对象
相机处理程序
好可爱
现在让我们把它保存在这里，因为我说我们要说相机
处理程序点，然后我们就可以了
我现在会做同样的事情，然后粘贴在那里
好的，现在回到我之前的观点，我们实际上需要摆脱这个权利
在这里，然后我们再做一个，如果
声明在这里，因为这是我们要做的，呃，如果我们
冲刺所以我们要说如果嗯输入处理程序
dot sprint flag 是真的，或者你可以说或
你也应该说roll flag或者roll flag
相反，所以我们要做这个逻辑，因为这将
允许我们在跑步的方向上旋转或冲刺
现在如果我们实际上没有冲刺或滚动并且我们被锁定在一个目标上
我们想要面对我们的锁定目标，所以实际上
相当简单，我们只说向量 3
旋转方向等于移动方向
然后我们要说旋转方向
等于
相机处理程序点当前锁定目标
点位置减去变换点位置，我们要说
旋转方向点 y 等于零
然后旋转方向点归一化
然后我们要像上面那样做四元数 tr 我们要说等于
quaternion.look 旋转，我们要说我们的
旋转方向 然后我们要说四元数目标旋转
等于我们要说的四元数
transform.rotation 呃然后你大概可以猜到
我们要说目标旋转的博士 我们要这样做
转速乘以时间点增量时间非常
直截了当，然后我们要说
transform.rotation 等于目标旋转
我们可以保存它，现在我们应该转向我们的目标
好的，我们还将在这里添加一些变量，用于我要添加的高度
将这个公共浮动锁定枢轴位置称为我要做的
一个用于解锁枢轴位置，锁定位置将是 2.25 f
我已经测试过了这是我喜欢你可以玩的高度如果
您希望解锁枢轴位置将是
1.65 f 现在要做的是调整
呃相机轴的高度，所以我们要创建一个名为的函数
设置相机高度，因为当你锁定首尔的某物时，相机
实际上角度更远一点，所以看起来你有点像
稍微降低你的目标 所以我们要把它设为私有
实际上我可能会公开我可能会称其为输入处理程序
可能现在矢量 3 速度等于矢量 3.0
然后我们要说向量 3
新的锁定位置，如锁定时新相机的新位置
我们要说新向量 3 0 已锁定
枢轴位置，然后我们会说我们要去
使另一个变量称为向量 3 新的解锁位置，如在新
未锁定时相机高度的位置
我们将说等于新向量 3 0 然后是解锁位置，因为
我们只想改变 um 相机的高度之一
轴所以我们要说如果当前锁定和目标没有
等于 null 那么我们要说相机枢轴变换
点变换点局部位置等于向量 3 点平滑阻尼
在相机枢轴变换点局部之间
位置和我们新的锁定位置，我们将参考我们的速度
我们将按照时间点增量时间进行，我们将做同样的事情
如果你当前锁定目标，我们会说其他的
为空，这意味着您没有被锁定，我们将做完全相同的事情
如上所述，除了我们要说而不是我们的新锁定位置，我们将
说我们的解锁位置或新解锁
位置，当你锁定和关闭时，这一切都会发生
是啊，只是调整你的相机的高度，所以
我们要继续，实际上现在我正在考虑这个我想我
要把这个从私人切换到公共
因为我在手柄锁定结束时调用它
函数在我们的输入处理程序中，所以让我们在这里切换到
上市
实际上，当我们说句柄锁定时，我应该调用它
我会这样做，因为那样会使用更少的内存，因为如果我
把它放在这里它每帧都被调用
我只是暂时把它放在这里我会暂时改变它或者
在视频之后，它会这样做，所以让我们
现在把它放在这里，我会保存它并测试它，现在当我
锁定一个目标，正如你所看到的，我们扫射
相机升起 我们来回扫射
我们的动画根据方向而变化
我们要去，看起来很棒，所以你们应该把布景放好
相机高度在您的灯光和您的手上以锁定功能
嗯，我会做我没有在这个视频中做过的事，现在回想起来
重新看这个片段我以为我会我想我不是我没有
我会做下一个视频，反正这不是太重要，所以现在
我们将在我们的手柄锁中进入 um for 循环
我们要说如果物理点线投线投
真的很酷，因为它的作用是在两个人之间发射光线
游戏中的积分这对于锁定非常有用，如果您
想要检测目标之间的任何东西，例如
结构这是我们要做的
所以我们要说呃 playermanager.lockontransform 是的，我
知道我们还没有创建玩家经理变量，但我们会说出来
所以我们要开始我们要开始的锁定转移组合
那里的光线投射，我们将拍摄它
我们当前的目标块 呃这是我们的
这就是所谓的她的性格，所以 character.lock 变换
然后因为这个它会发射光线
在这两点之间，呃我们实际上可以检查
用那个光线投射看它是否击中某个层的东西
所以你可以看到我要去哪里这个非常非常强大
我要说的是命中我没有为光线投射创建命中变量是的
我们也将在一秒钟内做到这一点，所以现在我们要说
调试对话框或点画线抱歉，我们只是要复制和粘贴
就在这里，这样我们就可以在游戏中看到它，如果你
如果某些东西不起作用，想调试它
呃小写p
好的，现在我们要说如果没有击中不控制器击中善良自动
正确哦，我的天哪又做了一次，好吧，我
没有制作命中变量，这可能就是为什么它
想要自动填充其他东西，所以让我们快速完成
在浮动可视角度的正下方让我们进行光线投射
并称之为命中
然后我们会说如果hit dot transform dot game object dot layer
等于，我只是要为此创建一个变量，我们将称之为
它被称为环境层，或者只是呃是的环境层我做的
或者我会在一秒钟内完成，所以如果它确实击中了
任何与环境层的层然后我们知道
呃你不能锁定因为有东西挡住了
在你和你试图锁定的目标之间有一个物体
否则，是的，将目标添加到您的潜力中
锁定目标列表，因此没有任何障碍，那么您绝对可以锁定
所以现在让我们创建这些变量
需要使玩家管理器变量和环境层变量如此
就在这个图层蒙版的正下方，称为忽略图层，我要制作一个
图层蒙版称为环境播放器，我将在正上方
呃这里现在叫做玩家经理
首先让我们从这里开始，让我们为此做一个开始
我们要说环境图层等于图层蒙版点名称到图层
呃环境我要复制它，因为这就是我们所说的层
所有这一切只是是啊它是呃它给你层的名称通过
文本好吧，让我们说球员经理球员
manager 然后在我们的唤醒方法中我们会说玩家经理等于
非常简单地找到玩家经理类型的对象，这样做真的很快
太好了，我们走了，我不知道为什么
那里的括号修复了我今天无法输入的问题，天哪
太糟糕了，好吧保存，我认为我们应该非常接近
完成所以我要在这里添加一个图层我要
粘贴环境层八然后我做了一堵墙
正如你所看到的，我已经标记了其中的每个块
如果我按下播放键，这面墙现在有环境
正如你所看到的，我会靠近墙壁，我试图锁定，但我无法锁定
锁定好吧我现在不能锁定现在很好
如果我去现场并突出显示所有这些墙
然后我降低它们然后我回到游戏中
我现在可以锁定，所以伙计们，你们现在可以锁定系统了
这实际上会呃有效地找到一个锁定目标
只有当目标在你的范围内时，目标之间的切换才会锁定
屏幕空间就像在一个视角内一样，所以你不会
锁定并且东西不在屏幕上，你不能锁定在屏幕上的东西
现在在结构后面，这是一个完全正常工作的
功能非常漂亮的锁定系统类似于灵魂我希望你
伙计们喜欢这个系列的这一部分
我玩得很开心，现在我们有一个我要去的小错误
在未来的视频中解决下一个错误压缩
视频因为我要和几个人一起玩
如果你锁定目标，那么基本上处理它的不同方法
他们没有面对你，嗯，你的选择锁定被颠倒了
意思是如果你想从右到左
而不是击中左箭头键，你必须击中
如果他们回到你身边是正确的，因为它呃
从目标的前向变换判断方向我不认为
这很难修复我知道一种很容易修复它的方法
一个 if 语句，但我想看看我是否能做到
甚至更好，也许只是改变逆变换点或其他东西
无论如何，我现在有点忘乎所以，嗯，是的，我们有一个非常酷的锁
在系统上工作，所以呃，如果你做到了，那就太棒了
给自己拍拍背，伙计们开始走很长的路了
如果你喜欢这个视频，项目看起来很酷，像往常一样
请留下一个赞，它确实对我有很大帮助
帮助更多，如果你感觉超级慷慨，呃
在下面查看我的 patreon 给我所有的 patreon 和我所有的观众
我所有的支持者都非常感谢你们
我会在下一个再见
[音乐] 你