UEC++ 虚幻5第三人称射击游戏(二)

UEC++ 虚幻5第三人称射击游戏(二)

派生榴弹类武器

  • 新建一个继承自Weapon的子类作为派生榴弹类武器
    在这里插入图片描述
  • Weapon类中的Fire函数添加virtual关键字变为虚函数让榴弹类继承重写
    在这里插入图片描述
  • ProjectileWeapon中重写Fire函数,新建生成投射物的模版变量
    在这里插入图片描述
  • Fire函数重写逻辑
    在这里插入图片描述
  • 代码
	//生成的投射物
	UPROPERTY(EditAnywhere,BlueprintReadOnly,Category = "ProjectileWeapon")
	TSubclassOf<AActor> ProjectileClass;
//--------------------------------------------------------------------------------------------------
void AProjectileWeapon::Fire()
{
   
	AActor* MyOwner = GetOwner();
	if (MyOwner)
	{
   
		FVector EyeLocation;
		FRotator EyeRotation;
		MyOwner->GetActorEyesViewPoint(EyeLocation, EyeRotation);

		FActorSpawnParameters SpawnParams;
		//设置投射物生成参数:即使生成位置有碰撞,也要强行生成投射物,不进行碰撞检测处理
		SpawnParams.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
		//获取枪口位置
		FVector MuzzleLocation = SkeletalComponent->GetSocketLocation(MuzzleSocketName);
		//生成并发射投射物
		GetWorld()->SpawnActor<AActor>(ProjectileClass, MuzzleLocation, EyeRotation, SpawnParams);
	}
}

派生类榴弹武器

  • 将派生的榴弹类创建蓝图,网格模型添加上去
    在这里插入图片描述
  • 将网格模型里面的插槽名字改为我们C++中定义的名字
    在这里插入图片描述
  • 创建一个Actor蓝图作为子弹,添加一个发射器与一个球体网格,发射器初始速度与最大速度设置为2000,开启抛物体反弹效果。球体网格开启物理模拟。
    在这里插入图片描述
    在这里插入图片描述
  • 将榴弹武器蓝图生成发射物暴露在蓝图中的生成物子弹加入在其中
    在这里插入图片描述
  • 在角色蓝图中将实例的武器类型换为榴弹炮武器,然后把实例的对象换为父类武器,这样就方便我们测试调用函数时的问题
    在这里插入图片描述
  • 在子弹蓝图里面添加一个爆炸事件,然后抒写逻辑
    在这里插入图片描述
  • BeginPlay处调用该逻辑事件
    在这里插入图片描述
  • 运行结果
    请添加图片描述

阻击的变焦推进效果

  • 在角色类中新建四个变量,一个用来是否开启变焦推进,一个用来表示变焦的视野范围,一个用来获取默认的视野范围,一个表示进行线性插值到新视角的速率
    在这里插入图片描述
  • 新建一个右击的操作输入
    在这里插入图片描述
  • 新建右击操作的处理函数
    在这里插入图片描述
  • 给移动的新视角和移动插值的速率赋值
    在这里插入图片描述
  • BeginPlay中获取默认视角范围
    在这里插入图片描述
  • 右击绑定函数逻辑与设置新视角线性插值范围逻辑
    在这里插入图片描述
  • 绑定输入操作
    在这里插入图片描述
  • 引擎中新建一个操作输入,然后添加到映射中
    在这里插入图片描述
    在这里插入图片描述
  • 绑定操作到角色蓝图上
    在这里插入图片描述
  • 运行结果
    请添加图片描述

创建控制台变量

  • 在武器类中新建一个静态变量作为控制控制台的变量,控制是否射击画线,新建自动管理控制台变量类
    在这里插入图片描述
  • FAutoConsoleVariableRef :用于自动管理控制台变量的一个类
FAutoConsoleVariableRef ACVRDebugWeaponDrawLine(TEXT("COOP.DebugWeapons"), DebugWeaponDrawLine,TEXT</
### 如何在 Unreal Engine 中使用 C++ 打包第三方动态库 (DLL) 要在 UE4 或 UE5 的项目中成功集成和打包第三方动态链接库(DLL),需要完成以下几个方面的配置: #### 配置 DLL 文件路径 确保项目的构建文件能够找到所需的 DLL 和其对应的头文件。这通常通过修改 `.Build.cs` 文件来实现,指定额外的包含目录以及库路径[^1]。 ```csharp PublicIncludePaths.Add("Path/To/DLL/Header"); PrivateDependencyModuleNames.AddRange(new string[] { "YourThirdPartyLibraryName" }); ``` #### 加载与调用 DLL 函数 对于动态加载的库,在运行时需利用 `FPlatformProcess::GetDllHandle()` 来获取句柄,并通过 `FPlatformProcess::GetSymbol()` 获取具体函数指针。 ```cpp void* LibraryHandle = FPlatformProcess::GetDllHandle(*LibraryFilePath); if(LibraryHandle != nullptr){ typedef void (*SayHelloFunc)(); SayHelloFunc sayHello = reinterpret_cast<SayHelloFunc>(FPlatformProcess::GetSymbol(LibraryHandle, "sayHello")); if(sayHello != nullptr){ sayHello(); // 调用第三方库的方法 } } ``` #### 修改生成代码行为以适配最新标准 考虑到引擎版本更新可能带来的变化,比如不再支持某些旧的数据类型转换方式,则应遵循最新的编码规范调整自动生成的部分代码[^2]。 #### 更新资源中间格式适应新工作流 随着虚幻引擎逐步迁移到更高级别的网格资产中介格式,任何依赖特定模型表示形式的功能都应当重新评估是否兼容新的框架结构[^3]。 以上过程涵盖了从基础设置到实际操作再到未来维护考量等多个层面的内容,旨在帮助开发者顺利地将在其他环境中开发好的功能模块引入至基于 Unreal 构建的游戏或者应用之中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值