请问是否有办法让UE里的Pawn类和角色类一样可以切换飞行和行走模式?
7条回答 默认 最新
关注
引自免费微信小程序:皆我百晓生
在Unreal Engine 4(UE4)中,你可以通过继承
APawn
类并实现自己的移动逻辑来实现飞行和行走模式的切换。这里我会为你提供一个详细的步骤和代码示例。首先,你需要创建一个新的 Pawn 类。在 UE4 中,可以通过以下步骤创建:
- 打开内容浏览器(Content Browser),右键点击你想放置新项目的文件夹,选择「新建」(New)->「C++ Class」。
- 在弹出的窗口中,选择「Actor」作为基类,然后输入新的类名,例如
MyCharacter
,然后点击「Create」。
接下来,打开你刚创建的
MyCharacter.h
文件,并修改它以继承自ACharacter
而不是默认的APawn
。这是因为ACharacter
包含了行走动画和其他人物相关的功能,而我们想让它具备行走和飞行的能力。#pragma once #include "CoreMinimal.h" #include "GameFramework/Character.h" #include "MyCharacter.generated.h" UCLASS() class YOURPROJECT_API AMyCharacter : public ACharacter { GENERATED_BODY() public: // Sets default values for this character's properties AMyCharacter(); protected: // Called when the game starts or when spawned virtual void BeginPlay() override; public: // Called every frame virtual void Tick(float DeltaTime) override; //叫飞行函数 UFUNCTION(BlueprintCallable, Category = Movement) void Fly(); //叫步行函数 UFUNCTION(BlueprintCallable, Category = Movement) void Walk(); };
然后,在对应的
.cpp
文件中,添加相应的实现:// MyCharacter.cpp #include "MyCharacter.h" #include "Components/PlayerCameraManager.h" AMyCharacter::AMyCharacter() { PrimaryActorTick.bCanEverTick = true; Controller = CreateDefaultSubobject<ABaseController>(TEXT("Controller")); Mesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh")); RootComponent = Mesh; } void AMyCharacter::BeginPlay() { Super::BeginPlay(); } void AMyCharacter::Tick(float DeltaTime) { Super::Tick(DeltaTime); if (GetControlledMovementComponent()) { if (IsWalking()) GetControlledMovementComponent()->SetWalkMode(WalkModes::WM_Walking); else GetControlledMovementComponent()->SetWalkMode(WalkModes::WM_Flying); } } void AMyCharacter::Fly() { WalkingState = false; } void AMyCharacter::Walk() { WalkingState = true; }
在上面的代码中,我们定义了一个布尔变量
WalkingState
来跟踪当前是行走还是飞行状态。然后在Tick()
函数中,根据这个状态设置行走模式。IsWalking()
是一个虚构的方法,用于检查当前的行走状态,你可以根据需要实现它。在这个例子中,我们将它设置为简单的布尔值。为了实际实现飞行和行走的切换,你需要在蓝图中绑定这些函数到玩家输入或其他触发事件。在蓝图编辑器中,找到你创建的
MyCharacter
类,然后在 Event Graph 或 User Interface 下面创建一个新的事件。例如,你可以将行走和飞行分别绑定到两个不同的按键上。- 右键点击 Event Graph -> Add Event -> Input -> Key Pressed。
- 选择一个按键,比如 W 键,然后在右侧的 Node Graph 中双击
Event Key Pressed
,这会自动创建一个ExecuteUbergraph
节点。 - 右键点击空白区域,选择
Add Custom Event
,然后从下拉列表中选择Walk()
或Fly()
函数。
这样,当按下指定的按键时,就会触发对应的行走或飞行操作。
注意:在实际项目中,你可能还需要处理一些额外的事情,比如调整相机视角、播放相应的动画等,但这里只给出了基本的思路。如果你对 UE4 的蓝图系统不熟悉,建议参考官方文档或教程学习更多细节。
解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥50 如何在不能联网影子模式下的电脑解决usb锁
- ¥20 服务器redhat5.8网络问题
- ¥15 如何利用c++ MFC绘制复杂网络多层图
- ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
- ¥15 python螺旋图像
- ¥15 算能的sail库的运用
- ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
- ¥15 找代写python里的jango设计在线书店
- ¥15 请教如何关于Msg文件解析
- ¥200 sqlite3数据库设置用户名和密码