沭阳网站建设托管,上海著名网站设计公司,公司有网站域名 如何做网站,dede 网站地图“奇怪#xff0c;这blog不支持md格式吗”## 第1步#xff1a;设置玩家Pawn
创建一个蓝图类#xff0c;继承自 Pawn#xff0c;在游戏模式#xff08;Game Mode#xff09;中#xff0c;将这个Pawn设置为默认
在组件面板中#xff0c;添加一个 Spring Arm 组件
在组件面…“奇怪这blog不支持md格式吗”## 第1步设置玩家Pawn
创建一个蓝图类继承自 Pawn在游戏模式Game Mode中将这个Pawn设置为默认
在组件面板中添加一个 Spring Arm 组件
在组件面板中添加一个 Camera 组件并将它拖拽到 Spring Arm 组件上使其成为子级## 第2步设置增强输入Enhanced Input 创建输入动作 (Input Action)在内容浏览器中右键 - 输入 - 输入动作Input Action。命名为 IA_Zoom。打开它将 Value Type 设置为 Axis1D (float)。这表示它会提供一个浮点数值。创建输入映射上下文 (Input Mapping Context)在内容浏览器中右键 - 输入 - 输入映射上下文Input Mapping Context。命名为 IMC_Default。打开它点击 Mappings 旁边的 号。在新增的条目中选择我们刚刚创建的 IA_Zoom。点击旁边的小键盘图标在搜索框中输入 Mouse Wheel选择 Mouse Wheel Axis。将IMC应用到玩家打开玩家控制器Player Controller蓝图或者如果你没有自定义的可以在Pawn蓝图的 BeginPlay 事件中完成。在 Event BeginPlay 事件后添加以下节点将 IMC_Default 应用到玩家身上。
## 第3步在Pawn蓝图中实现缩放逻辑(拉近拉远视角) 打开Pawn蓝图的事件图表。创建三个浮点型变量来控制缩放ZoomSpeed (缩放速度例如50.0)MinZoomLength (最小臂长例如300.0)MaxZoomLength (最大臂长例如2000.0)将它们设置为“可编辑实例”这样就可以在编辑器里直接调整。在事件图表中右键搜索并添加 IA_Zoom 事件节点。实现以下蓝图逻辑 逻辑分解:IA_Zoom (Triggered): 当鼠标滚轮滚动时这个事件会被触发。Action Value: 这是鼠标滚轮的值。向上滚动是 1.0向下是 -1.0。Get Spring Arm: 获取我们要控制的弹簧臂组件。Get Target Arm Length: 获取当前弹簧臂的长度。乘法 (float): Action Value * ZoomSpeed 计算出本次滚动应该改变多少长度。减法 (float): 当前长度 - 改变的长度。我们用减法是因为向上滚动值为正时我们希望臂长变短拉近镜头。Clamp (float): 这是关键它会将计算出的新长度限制在 MinZoomLength 和 MaxZoomLength 之间确保不会超出范围。Set Target Arm Length: 将最终被限制过的值设置回弹簧臂完成缩放。
## 第4步创建新的输入动作 IA_Move水平移动1. 在内容浏览器中右键 - 输入 (Input) - 输入动作 (Input Action)。2. 命名为 IA_Move。3. 双击打开它在 Details 面板中将 Value Type 设置为 Axis2D (Vector 2D)。这表示它会同时处理两个方向的输入X轴和Y轴。## 第5步更新输入映射上下文 IMC_Default1. 打开之前创建的 IMC_Default 文件。2. 在 Mappings 列表中点击 号添加一个新的映射。3. 在新增的条目中选择我们刚刚创建的 IA_Move。4. 现在我们需要为 IA_Move 添加四个按键映射W, S, A, D。添加 W 键 (向前):点击 IA_Move 旁边的小 号添加一个按键。选择键盘图标搜索并选择 W 键。在 W 键的设置中添加一个 Modifier - Swizzle Input Axis Values。这个修饰符可以将一维的按键输入按下/松开转换到二维向量的特定轴上。默认情况下它会映射到Y轴这正是我们想要的在UE中Y轴通常代表“前进”方向。添加 S 键 (向后):再次为 IA_Move 添加一个按键选择 S 键。为 S 键添加一个 Modifier - Negate。这会将输入值取反从 1.0 变为 -1.0实现向后移动。再为 S 键添加第二个 Modifier - Swizzle Input Axis Values。确保Negate在Swizzle之上这样是先取反再映射到Y轴。添加 D 键 (向右):为 IA_Move 添加一个按键选择 D 键。D 键默认就会映射到X轴的正方向所以它不需要任何Modifier。添加 A 键 (向左):为 IA_Move 添加一个按键选择 A 键。为 A 键添加一个 Modifier - Negate。这会将X轴的输入值取反实现向左移动。
## 第6步在Pawn蓝图中实现移动逻辑
现在我们回到Pawn蓝图的 事件图表 (Event Graph)。1. 创建移动速度变量:在 My Blueprint 面板中创建一个新的浮点型变量命名为 MoveSpeed。编译蓝图后给它一个默认值比如 1000.0。2. 添加 IA_Move 事件节点:在事件图表的空白处右键搜索并添加 IA_Move 事件节点。注意这个事件会在按键被按住期间持续触发 (Triggered)这正是我们想要的平滑移动效果。3. 实现移动蓝图逻辑:我们需要在每一帧Tick都根据输入来移动Pawn所以最好将移动逻辑放在 Event Tick 中并通过 IA_Move 事件来更新一个代表移动方向的变量。创建一个新变量: 在 My Blueprint 面板中创建一个 Vector 2D 类型的变量命名为 MoveInput。这个变量将存储 W/A/S/D 的输入状态。
逻辑A: 更新 MoveInput 变量从 IA_Move 的 Triggered 执行引脚连接到一个 Set MoveInput 节点将 Action Value (这是一个Vector 2D) 存入我们的变量。从 IA_Move 的 Completed 执行引脚当所有相关按键都松开时触发也连接到一个 Set MoveInput 节点但这次将值设置为 (0, 0)以停止移动。
逻辑B: 在 Event Tick 中执行移动找到 Event Tick 节点。从 Event Tick 拖出添加 Add Actor World Offset 节点。这个节点可以直接移动Actor并且会自动处理碰撞如果开启了碰撞。接下来是关键计算每帧的移动偏移量 (Delta Location)。
计算偏移量的详细步骤1. Get MoveInput: 获取我们存储的二维移动输入。2. Get Control Rotation: 获取玩家控制器的旋转。这代表了玩家的视角方向。我们只关心水平旋转Yaw。3. Break Rotator: 将旋转分解为 Roll, Pitch, Yaw。4. Make Rotator: 只使用 Yaw 值重新创建一个只包含水平旋转的 Rotator。这确保我们移动时不会因为相机俯仰而向上或向下飞。5. Get Forward Vector: 从这个纯水平的旋转中获取“前”方向向量。6. Get Right Vector: 从这个纯水平的旋转中获取“右”方向向量。7. 拆分 MoveInput: 使用 Break Vector 2D 节点将 MoveInput 分为 X 和 Y。8. 计算最终方向:§ Forward Vector * MoveInput.Y - 计算前后方向的移动分量。§ Right Vector * MoveInput.X - 计算左右方向的移动分量。§ 将这两个向量相加得到最终的移动方向向量。9. 标准化 (Normalize): 对合成的方向向量进行标准化确保斜向移动的速度和直线移动的速度一致。10. 乘以速度和时间:§ 将标准化后的方向向量乘以 MoveSpeed。§ 再乘以 Event Tick 提供的 Delta Seconds。这确保移动速度与帧率无关在任何电脑上都一样快。我的demo中没用此步骤11. 连接到 Add Actor World Offset: 将最终计算出的偏移量连接到 Delta Location 引脚。
## 第7步创建新的输入动作1. 创建 IA_Look (用于鼠标移动)在内容浏览器中右键 - 输入 (Input) - 输入动作 (Input Action)。命名为 IA_Look。打开它将 Value Type 设置为 Axis2D (Vector 2D)。2. 创建 IA_RotateCamera (用于鼠标右键)再次创建一个新的输入动作。命名为 IA_RotateCamera。这个动作使用默认的 Value Type Digital (bool) 即可因为它只关心按下true和松开false。## 第8步更新输入映射上下文 IMC_Default1. 打开IMC_Default 文件。2. 添加 IA_RotateCamera 映射:点击 Mappings 列表旁的 号添加一个新映射。选择 IA_RotateCamera。点击键盘图标选择 Right Mouse Button。3. 添加 IA_Look 映射 (关键步骤):再次点击 号添加另一个新映射。选择 IA_Look。点击键盘图标搜索并选择 Mouse XY 2D-Axis。这个代表鼠标在X和Y轴上的移动。最重要的部分为这个映射添加一个 触发器 (Trigger)。在 IA_Look 映射条目的 Triggers 数组旁点击 号。在下拉菜单中选择 Chorded Action。Chorded Action 触发器的作用是只有当另一个指定的动作Chord Action被触发时当前这个动作在这里是IA_Look才会被激活。在 Chorded Action 的设置中将 Chord Action 属性设置为我们刚刚创建的 IA_RotateCamera。
这个设置意味着只有当 IA_RotateCamera即鼠标右键被按住时IA_Look鼠标移动的输入才会被发送到我们的蓝图。这完美地实现了“按住右键移动鼠标才旋转”的需求。## 第9步在Pawn蓝图中仅实现水平旋转逻辑 1. 添加 IA_Look 事件节点:○ 在事件图表的空白处右键搜索并添加 IA_Look 事件节点。2. 实现旋转蓝图逻辑:○ 从 IA_Look 事件节点的 Action Value (这是一个Vector 2D) 拖出一条线。○ 使用 Break Vector 2D 节点来分离出X和Y的值。○ 我们只关心 X 值因为它代表鼠标的水平移动。○ 将 X 值乘以 LookSpeed 变量以控制旋转速度。○ 将最终的结果连接到 Add Controller Yaw Input 节点的 Val 输入引脚。
注意
Pawn蓝图, 在右侧的 Details 面板中搜索 Use Controller Rotation Yaw,要记得勾选默认应该是不勾选的把