663人加入学习
(1人评价)
虚幻5 UE5.4零基础小白入门教程C++版-2025最新版

制作完成于 2025年2月8日 使用虚幻引擎5.4 版本5.4.4,VisualStudio2022

价格 免费

实际上角色移动XY轴反了的问题是来自Move()里面的一些配置错误。

我觉得正确的代码如下:

        AddMovementInput(ForwardDirection, MovementVector.X);
        AddMovementInput(RightDirection, MovementVector.Y);

在课件中的代码示例上,XY的配给是相反的。

ForwardDirection 前方向配给红色的X轴,负责前后偏移; RightDirection配给绿色的Y轴,负责左右偏移量的调整。

 

ad确实应该是应该应用扭转的那个Y轴。
之所以ws控制了左右,而ad控制了前后,是因为XY在AddMovementInput()上的配给 给反了。ad输入的Y轴数据操控了前后,ws输入的X轴数据操控了左右。

而取消了ad的扭转则是使ad也去负责了X轴的输入,修改了ws的扭转是让ws去进行了Y轴的输入。最后虽然是ws控制前后移动则是因为角色的前后移动由输入者,inputValue.Get<FVector2D>(),的Y轴数值控制,反之ad依然。

[展开全文]

构造函数修改的逻辑都需要重启引擎

 

[展开全文]

碰撞响应为阻挡时,才能触发命中事件

 

[展开全文]

#include "InputActionValue.h"
 

protected:

    //声明移动和视角移动的函数,并且有个Value常量

    vo id Move(const FInputActionValue& Value);
    void Look(const FInputActionValue& Value);

 

 


void AMyPlayer::Move(const FInputActionValue& Value)
{
    //获取Velue里面的一个2D值并且赋予给MovementVector
    FVector2D MovementVector = Value.Get<FVector2D>();

    if (Controller!=nullptr)
    {
        const FRotator Rotation = Controller->GetControlRotation();
        //点头pitch ,摇头Yaw.偏头row.
        const FRotator YawRotation(0,0,Rotation.Yaw);

        //获取前后左右向量
        const FVector ForwardDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::X);
        const FVector RightDirection = FRotationMatrix(YawRotation).GetUnitAxis(EAxis::Y);

        //添加移动输入
        AddMovementInput(ForwardDirection,MovementVector.X);
        AddMovementInput(RightDirection, MovementVector.Y);


    }

}

 

 

 


 

[展开全文]

//TObjectPtr<UCameraComponent>Camera;

GEngine->AddOnScreenDebugMessage();

UE_LOG();

[展开全文]

class USpringArmComponent;

private:

UPROPERTY(EditAnywhere,BluepringReadOnly,Category = Camera, meta = (AllowPrivateAcces = "true"))

USpringArmComponent* CameraBoom;

#include "GameFramework/SpringArmComponent.h"

 

CameraBoom = CreateDefaultSubobject<USprintArmComponent>("CameraBoom")

CameraBoom->SetupAttachment(RootComponent);

 

Class UCameraComponent;

UCameraComponent* Camera;

 

#include "Camera/CameraComponent.h"

Camera = CreateDefaultSubobject<UCameraComponent>("Camera")

 

Camera->SetupAttachment(CameraBoom);

 

CameraBoom->TargetArmLength = 500.f

 

CameraBoom->SetRelativeRotation(FRotator(0.f ,-30.f, 0.f))

 

 

 

 

[展开全文]

BlueprintImplementableEvent

void Event_MyAttack();

 

Category:分类显示

 

Meta: 设置元数据

 

Server、Client:用于网络功能的

 

 

BlueprintNativeEvent:原生蓝图事件,需要在c++里面写内容,和implementable功能一样

 

[展开全文]

 

public

\\UFUNCTION()

\\BlueprintCallable 蓝图调用:可以。

\\BlueprintPure 声明一个纯函数

\\BlueprintImplementableEvent:声明该函数为蓝图可实现事件,在蓝图中可以实现该事件的逻辑

UFUNCTION(BluePrintCallable)

void ReducePlayerHealth();

 

 

在.cpp文件里面调用一下这个函数

void AMyPlayer::ReducePlayerHealth(){}

 

UE_LOG(LogTemp,Warning,TEXT("大家都是帅哥美女"));

 

 

UFUNCTION(BlueprintPure)

Bool IsSuccessful();

.cpp文件里面

bool AMyPlaer::IsSuccessful(){

return true;

}

[展开全文]


    //VisibleAnywhere:主:显示。蓝图:显示,编辑:否
    //VisibleDefaultOnly:主:不显示。蓝图:显示,编辑:否
    //EditDefaultsOnly:主:不显示。蓝图:显示。编辑:是
    //EditAnywhere:主:显示。蓝图:显示。编辑:是
    //EditInstanceOnly:蓝图:不显示。实例化后:主可编辑。
    //BlueprintReadWrite:蓝图:读写。
    // BlueprintReadOnly:蓝图:只读
    //Category:指定分类
    //Meta:元数据   , meta = (AllowPrivateAccess = "true")  在蓝图中可以被访问到
private:
    UPROPERTY(EditAnywhere, Category = "State|Health", meta = (AllowPrivateAccess = "true"))
        float MyHealth;

[展开全文]

AllowPrivateAccess = "true"的作用:private变量添加BlueprintReadWrite或者BlueprintReadOnly会出现编译错误

添加AllowPrivateAccess,不会出现编译错误,但在蓝图中会变成public变量

[展开全文]