王树贤

Results 728 comments of 王树贤

# 4.虚幻引擎中的C++ ## 设置vs界面 vs菜单栏-右键-自定义 命令-工具栏-标准 解决方案配置 解决方案平台 启动项目 修改所选内容 ![image](https://github.com/WangShuXian6/blog/assets/30850497/9031441c-1a69-4a29-a4a8-b45f48e9efac) ## C++ ![image](https://github.com/WangShuXian6/blog/assets/30850497/24240557-26c8-42c8-986c-4934a7bf45cf) ![image](https://github.com/WangShuXian6/blog/assets/30850497/a3cb9758-165a-4c00-a9a3-03e823078a8f) ![image](https://github.com/WangShuXian6/blog/assets/30850497/627c5f8f-414a-4c83-8401-53ce0a5f4243) ![image](https://github.com/WangShuXian6/blog/assets/30850497/2c4342a8-470c-4f04-bd1e-c154330d089a) ![image](https://github.com/WangShuXian6/blog/assets/30850497/51238e5b-6c48-4653-8d24-f7dac64e4ca7) ## 反射与垃圾回收 Reflection and Garbage Collection 反射是程序在运行时检查自身的能力 程序将分析其自身内部发生的情况并收集有关该程序的数据。 C++没有内置反射,但虚幻引擎有自己设计的反射系统来收获这些数据 该反射系统负责将数据与Unreal Ed系统合并将其中一些数据暴露给蓝图并使用垃圾自动处理内存分配 ##...

# 5. The Actor Class ## 1. 创建 Actor C++ 将头文件放入public文件夹,cpp放入私有文件夹 ![image](https://github.com/WangShuXian6/blog/assets/30850497/6e7de2ae-b956-4f27-8483-112886c64a2c) ![image](https://github.com/WangShuXian6/blog/assets/30850497/b559099d-1b38-45e7-8503-d655e21d5d74) ![image](https://github.com/WangShuXian6/blog/assets/30850497/f0878a5c-ef12-43c1-9be3-5604556171ab) 新建文件后,等待 live coding 完成,再点击VS的 全部重新加载 item Actor类 的位置 ![image](https://github.com/WangShuXian6/blog/assets/30850497/3b5fb80d-23c8-47d0-9e35-23865bf448d0) 这将显示该类的父类,所属模块,路径 ![image](https://github.com/WangShuXian6/blog/assets/30850497/b5e9b304-8db0-454f-8078-c9866d775f05) 双击改类将在代码编辑中打开文件 `PCGdemo\Source\PCGdemo\Public\Items\Item.h` ```h // Fill...

# 6.使用C++代码移动对象 Moving Objects With Code ## SetActorLocation 位置 ### 蓝图中设置 SetActorLocation ![image](https://github.com/WangShuXian6/blog/assets/30850497/9bdbe55b-5e10-45f9-8455-cd34ded85fb0) ### C++ 中设置 SetActorLocation `E:\Unreal Projects 532\Learn\Source\Learn\Private\Items\Item.cpp` ```cpp #include "Items/Item.h" #include "Learn/DebugMacros.h" AItem::AItem() { PrimaryActorTick.bCanEverTick = true;...

# 7. The Pawn Class 继承自 actor 类,但可以被控制器所拥有。 ## 制作一只我们可以拥有并飞来飞去的鸟。 工具-新建C++类-选择 Pawn 类作为父类,创建新的C++类。 ![image](https://github.com/WangShuXian6/blog/assets/30850497/45c53e91-7cdf-45c0-b931-9eb172ef1b62) ![image](https://github.com/WangShuXian6/blog/assets/30850497/1c929b85-87f4-43a0-8f03-6b0aa366e6c2) `E:\Unreal Projects 532\Learn\Source\Learn\Public\Pawns\Bird.h` ```h #pragma once #include "CoreMinimal.h" #include "GameFramework/Pawn.h" #include "Bird.generated.h" UCLASS() class LEARN_API...

# 角色类 The Character Class https://docs.unrealengine.com/5.3/zh-CN/characters-in-unreal-engine/ 添加 CharacterMovementComponent、CapsuleComponent 和 SkeletalMeshComponent 后, [Pawn](InteractiveExperiences/Framework/Controller)类可延展为功能完善的 角色 类。 角色用于代表垂直站立的玩家,可以在场景中行走、跑动、跳跃、飞行和游泳。 此类也包含基础网络连接和输入模型的实现。 骨架网格体组件 与pawn不同的是,角色自带 SkeletalMeshComponent,可启用使用骨架的高级动画。可以将其他骨架网格体添加到角色派生的类,但这才是与角色相关的主骨架网格体。 如需了解骨架网格体的更多内容,请参见: 骨架网格体 [](Basics/Actors/SkeletalMeshActors "介绍什么是角色") [骨架网格体动画系统](https://docs.unrealengine.com/5.3/zh-CN/skeletal-mesh-animation-system-in-unreal-engine) 胶囊体组件 CapsuleComponent 用于运动碰撞。为了计算 CharacterMovementComponent 的复杂几何体,会假设角色类中的碰撞组件是垂直向的胶囊体。如需了解碰撞的更多信息,请参见: 胶囊体组件...

# 9. 动画蓝图 The Animation Blueprint ## The Animation Blueprint ### 制作动画蓝图 新建动画蓝图 ABP_Echo 内容侧滑菜单-右键-动画-动画蓝图 ![image](https://github.com/WangShuXian6/blog/assets/30850497/eecb3bdf-da0b-4757-9129-febe167d6594) 选择骨骼- ![image](https://github.com/WangShuXian6/blog/assets/30850497/31679b02-0810-469b-9015-bda314a2c83a) ![image](https://github.com/WangShuXian6/blog/assets/30850497/5a38e688-76af-4895-89c2-36ff072b527f) 打开 动画蓝图 ABP_Echo ![image](https://github.com/WangShuXian6/blog/assets/30850497/4b78122c-f9d6-4a11-8475-d8a7f6b774dd) 资产浏览器 可选择动画 添加到动画图 ![image](https://github.com/WangShuXian6/blog/assets/30850497/d05dfb5d-7d5c-46b9-933e-43ffb6a35708) ![image](https://github.com/WangShuXian6/blog/assets/30850497/3f3129c1-7dc9-4dab-a822-c0737d34c8ee) 选中拖入的动画节点 ![image](https://github.com/WangShuXian6/blog/assets/30850497/0032f01a-aa80-4432-99fd-216821ac470f)...

# 10. 碰撞和重叠 Collision and Overlaps ## 碰撞预设Collision Presets 为关卡拖入一块岩石静态网格体 ![image](https://github.com/WangShuXian6/blog/assets/30850497/331cdb4e-1f9c-46a2-bccc-cd301317de7a) 该实例是静态网格物体actor。 ![image](https://github.com/WangShuXian6/blog/assets/30850497/1f16caeb-f19b-4e87-9578-3892f9cd1fad) 并且它有一个静态网格物体组件,并且该静态网格物体组件自动设置了自己的静态网格物体。 ![image](https://github.com/WangShuXian6/blog/assets/30850497/5bf3ab26-b464-48ce-8ebb-f4f1074cb49b) ![image](https://github.com/WangShuXian6/blog/assets/30850497/744a71f6-27c2-4426-a183-0cd1ccb964b6) 一拖入一个自动静态网格物体 Actor,就会创建一个自动静态网格物体 Actor,因为它具有静态网格组件,组件具有碰撞设置,我们可以在详细信息面板中看到这些设置。 静态网格组件碰撞预设 ![image](https://github.com/WangShuXian6/blog/assets/30850497/f3d93b1c-b2b2-43c6-ab87-4dfd20d05096) 任何能够碰撞的组件都有一个 碰撞预设Collision Presets,定义碰撞行为 打开BP_LearnCharacter蓝图 选择 网格体 组件-细节面板-碰撞-碰撞预设 ![image](https://github.com/WangShuXian6/blog/assets/30850497/8f59c477-4028-4e24-946b-f9c21550e561) ###...

# 11. The Weapon Class ## 从 Item 类派生武器类 ![image](https://github.com/WangShuXian6/blog/assets/30850497/9a4512d4-97ae-41ac-8865-ac4cc2146e2c) actor类包含了放置在世界中的能力。 我们基于 actor 类派生了一个称为 item 的子类,并且添加了我们自己的自定义它的功能。 过创建一个武器类来进一步子类化,并且武器类可以继承item的属性,但随后继续专门化其自己的行为。 该物品能够以正弦运动上下浮动,这样武器就有了很好的浮动效果。 同时具由重叠事件。 如果我们创建一个名为 Weapon 的项目子类,它将继承这些属性。 现在,除了这些功能之外,我还希望能够装备该武器。 将该武器附加到角色上,本质上将网格附加到手上。 如果角色装备了武器,我们应该能够使用该武器。与世界互动、攻击事物并进行战斗。 ### 创建一个新的 C++ 武器类 内容侧滑菜单-all-C++类-Learn-Public-Items-item...

# 攻击 Attacking ## Animation Montages 创建攻击动画蒙太奇 状态机是处理动画状态的好方法,因为这些条件会被不断检查,一旦地速大于零,我们就会立即看到姿态的变化。 但对于某些游戏机制,不适合使用状态机,而是使用动画蒙太奇响应游戏中发生的事件的一次性动画。 可以将蒙太奇视为一个或多个动画的一种容器。 例如,我们可能有一个名为“攻击蒙太奇”的蒙太奇,其中包含两个攻击动画。 在蒙太奇中,我们可以创建与蒙太奇中的动画相关的部分,然后通过函数调用来播放蒙太奇,该函数调用指定要播放的蒙太奇以及要跳转到的部分。这对于攻击等一次性动作非常有用。 ![image](https://github.com/WangShuXian6/blog/assets/30850497/6e4e0087-9b0d-4117-ab97-63e1619cb6b9) ### 攻击动作映射 首先,创建一个新的攻击操作映射。使用鼠标左键。 如果我们要进行操作映射,这意味着我们需要回调,例如攻击函数,我们可以将其绑定到我们的攻击操作映射。 这意味着当我们点击鼠标左键时,我们的攻击函数就会被调用。 攻击函数中会播放动画蒙太奇,为此我们必须访问动画实例。 从敌人实例中,我们可以播放动画蒙太奇,指定要播放哪个蒙太奇。 ![image](https://github.com/WangShuXian6/blog/assets/30850497/64e184c7-a3b9-4e76-9f75-57a93f0c8e5a) 设置一个Attack操作映射,以便我们可以按下按钮并获得响应中调用的函数。 编辑项目设置,创建攻击操作映射。 ![image](https://github.com/WangShuXian6/blog/assets/30850497/c1525342-fff1-400b-b3c6-c38ce07d693c) ### 蓝图攻击函数 打开 BP_LearnCharacter 右键单击并输入Attack,这是我们在制作攻击操作映射后立即创建的操作事件。 ![image](https://github.com/WangShuXian6/blog/assets/30850497/adc88b0b-d2e0-4598-88dd-8a290e7bdf7d)...

# 13.武器力学 Weapon Mechanics ## 碰撞盒 Collision Box 为武器添加碰撞盒组件 box。 为了击中物体,我们需要在我们的武器上有某种碰撞体积。盒子是碰撞体积的完美形状。 `E:\Unreal Projects 532\Learn\Source\Learn\Public\Items\Weapons\Weapon.h` ```h class UBoxComponent; private: UPROPERTY(VisibleAnywhere, Category = "Weapon Properties") UBoxComponent* WeaponBox; ``` `E:\Unreal Projects 532\Learn\Source\Learn\Private\Items\Weapons\Weapon.cpp` ```cpp...