王树贤
王树贤
# 4.虚幻引擎中的C++ ## 设置vs界面 vs菜单栏-右键-自定义 命令-工具栏-标准 解决方案配置 解决方案平台 启动项目 修改所选内容  ## C++      ## 反射与垃圾回收 Reflection and Garbage Collection 反射是程序在运行时检查自身的能力 程序将分析其自身内部发生的情况并收集有关该程序的数据。 C++没有内置反射,但虚幻引擎有自己设计的反射系统来收获这些数据 该反射系统负责将数据与Unreal Ed系统合并将其中一些数据暴露给蓝图并使用垃圾自动处理内存分配 ##...
# 5. The Actor Class ## 1. 创建 Actor C++ 将头文件放入public文件夹,cpp放入私有文件夹    新建文件后,等待 live coding 完成,再点击VS的 全部重新加载 item Actor类 的位置  这将显示该类的父类,所属模块,路径  双击改类将在代码编辑中打开文件 `PCGdemo\Source\PCGdemo\Public\Items\Item.h` ```h // Fill...
# 6.使用C++代码移动对象 Moving Objects With Code ## SetActorLocation 位置 ### 蓝图中设置 SetActorLocation  ### 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++类。   `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 内容侧滑菜单-右键-动画-动画蓝图  选择骨骼-   打开 动画蓝图 ABP_Echo  资产浏览器 可选择动画 添加到动画图   选中拖入的动画节点 ...
# 10. 碰撞和重叠 Collision and Overlaps ## 碰撞预设Collision Presets 为关卡拖入一块岩石静态网格体  该实例是静态网格物体actor。  并且它有一个静态网格物体组件,并且该静态网格物体组件自动设置了自己的静态网格物体。   一拖入一个自动静态网格物体 Actor,就会创建一个自动静态网格物体 Actor,因为它具有静态网格组件,组件具有碰撞设置,我们可以在详细信息面板中看到这些设置。 静态网格组件碰撞预设  任何能够碰撞的组件都有一个 碰撞预设Collision Presets,定义碰撞行为 打开BP_LearnCharacter蓝图 选择 网格体 组件-细节面板-碰撞-碰撞预设  ###...
# 11. The Weapon Class ## 从 Item 类派生武器类  actor类包含了放置在世界中的能力。 我们基于 actor 类派生了一个称为 item 的子类,并且添加了我们自己的自定义它的功能。 过创建一个武器类来进一步子类化,并且武器类可以继承item的属性,但随后继续专门化其自己的行为。 该物品能够以正弦运动上下浮动,这样武器就有了很好的浮动效果。 同时具由重叠事件。 如果我们创建一个名为 Weapon 的项目子类,它将继承这些属性。 现在,除了这些功能之外,我还希望能够装备该武器。 将该武器附加到角色上,本质上将网格附加到手上。 如果角色装备了武器,我们应该能够使用该武器。与世界互动、攻击事物并进行战斗。 ### 创建一个新的 C++ 武器类 内容侧滑菜单-all-C++类-Learn-Public-Items-item...
# 攻击 Attacking ## Animation Montages 创建攻击动画蒙太奇 状态机是处理动画状态的好方法,因为这些条件会被不断检查,一旦地速大于零,我们就会立即看到姿态的变化。 但对于某些游戏机制,不适合使用状态机,而是使用动画蒙太奇响应游戏中发生的事件的一次性动画。 可以将蒙太奇视为一个或多个动画的一种容器。 例如,我们可能有一个名为“攻击蒙太奇”的蒙太奇,其中包含两个攻击动画。 在蒙太奇中,我们可以创建与蒙太奇中的动画相关的部分,然后通过函数调用来播放蒙太奇,该函数调用指定要播放的蒙太奇以及要跳转到的部分。这对于攻击等一次性动作非常有用。  ### 攻击动作映射 首先,创建一个新的攻击操作映射。使用鼠标左键。 如果我们要进行操作映射,这意味着我们需要回调,例如攻击函数,我们可以将其绑定到我们的攻击操作映射。 这意味着当我们点击鼠标左键时,我们的攻击函数就会被调用。 攻击函数中会播放动画蒙太奇,为此我们必须访问动画实例。 从敌人实例中,我们可以播放动画蒙太奇,指定要播放哪个蒙太奇。  设置一个Attack操作映射,以便我们可以按下按钮并获得响应中调用的函数。 编辑项目设置,创建攻击操作映射。  ### 蓝图攻击函数 打开 BP_LearnCharacter 右键单击并输入Attack,这是我们在制作攻击操作映射后立即创建的操作事件。 ...
# 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...