虚幻Unreal - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(94评价)
优惠后 ¥1899.00优惠前 ¥2299.00 双十一全年最大力度限时优惠
1对1 答疑即时回复7天无理由退款30天价保提问必答

服务保障

1对1 答疑

提供专属的一对一在线答疑,快速答疑解惑。

即时回复

及时响应学习咨询,帮助解决问题。

7天无理由退款

购买后7天内可申请无理由退款。

30天价保

购买后30天内如遇降价,可申请价保。

提问必答

对于提问做到有问必答,帮您扫清学习过程中的种种障碍

505

1.在头文件中增加成员变量声明:

public:

//增加一个移动速度变量用于可以在外部进行编辑

public:

UPROPERTY(EditAnywhere,Category="My Pawn Movement")

float MaxSpeed;

private:

//内部使用的一个位置偏移向量

FVector Volacity;

2.在源文件中进行初始化:

MaxSpeed=100.0f;

Volacity=FVector(0.0f);

3.在源文件中修改MoveForward和MoveRight函数:

void MyPawn::MoveForward(float Value){

 Volacity.X=FMath::Clamp(Value,-1.0f,1.0f)*MaxSpeed;

}

void MyPawn::MoveRight(float Value){

 Volacity.Y=FMath::Clamp(Value,-1.0f,1.0f)*MaxSpeed;

}

4.在源文件的Tick函数中添加:

AddActorLocalOffset(Volacity*deltatime,true);

5.编译测试

 

[展开全文]
那些年踩过的蘑菇 · 2020-02-21 · 0

504

1.添加按键映射,在project setting -> input -> Axis Mapping:

MoveForward:W,S

MoveRight:A,D

2.在头文件中声明两个成员函数:

void MoveForward(float Value);

void MoveRight(float Value);

3.在源文件中包含头文件:

#include "Components/InputComponent.h"

4.在源文件中空实现上述两个函数:

void MyPawn::MoveForward(float Value){

}

void MyPawn::MoveRight(float Value){

}

5.在源文件的SetupPlayerInputComponent函数中添加:

PlayerInputComponent->BindAxis(TEXT("MoveForward"),this,&MyPawn::MoveForward);

PlayerInputComponent->BindAxis(TEXT("MoveRight"),this,&MyPawn::MoveRight);

[展开全文]
那些年踩过的蘑菇 · 2020-02-21 · 0

503

1.创建BP_GameMode继承GameMode

2.打开BP_GameMode,将default Pawn改为BP_ MyPawn

3.在世界设置中替换为自己的BP_GameMode

4.在源文件构造函数中添加代码:

AutoPossessPlayer = EAutoReceiveInput::Player0;

[展开全文]
那些年踩过的蘑菇 · 2020-02-21 · 0

502

1.在头文件中声明一个摄像机组件:

public:

UPROPERTY(VisibleAnywhere,Category="My Pawn Components")

//class告诉编译器不要对下面的声明提示报错,后面会进行声明

class UCameraComponent* MyCamera;

2.在源文件中包含头文件:

#include "Camera/UCameraComponent.h"

3.在源文件中初始化:

MyCamera=CreateDefaultSubobject<UCameraComponent>(TEXT("MyCamera"));

MyCamera->SetupAttachment(this->GetRootComponent());

MyCamera->SetRelativeLocation(FVector(-300.0f,0.0f,300.0f));

MyCamera->SetRelativeRotation(FRotator(-45.0f,0.0f,0.0f));

4.创建蓝图类BP_MyPawn继承自定义C++类MyPawn

5.在蓝图类中添加网格体模型并赋予材质

[展开全文]
那些年踩过的蘑菇 · 2020-02-21 · 0

501

1.创建新的类MyPawn继承自Pawn

2.在头文件中声明一个静态网格组件成员变量:

public:

UPROPERTY(Visible,Category="My Pawn Property")

UStaticMeshComponent MyStaticMesh;

3.在源文件中包含头文件:

#include "Components/UStaticMeshComponent.h"

4.在源文件中初始化:

RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("RootComponent"));

MyStaticMesh=CreateDefaultSubobject<UStaticMeshComponent >(TEXT("MyStaticMesh"));

MyStaticMesh->SetupAttachment(this->GetRootComponent());

[展开全文]
那些年踩过的蘑菇 · 2020-02-21 · 0

413

1.在世界大纲中选中Floor2,在details中collision下的collision presets下选择custom

2.可以在下面的碰撞配置表中进行相应的设置来选择对相应物体是否忽略或者启用碰撞

3.在源文件中修改代码:

FHitResult HitResult;

AddActorLocalOffset(TickLocationOffset,true,&HitResult);

UE_LOG(LogTemp,Warning,TEXT("X:%f,Y:%f,Z:%f"),HitResult.Location.X,HitResult.Location.Y,HitResult.Location.Z);

4.编译测试

[展开全文]
那些年踩过的蘑菇 · 2020-02-21 · 0

412

1.在不开启物理模拟的情况下也可以进行碰撞阻挡

2. 注释源文件中的添加力和力矩的代码:

//AddForce();

//AddTorque();

3.在Tick()函数中修改:

//将bSweep修改为true,扫描即将移动的路径上是否有可以发生碰撞

AddActorLocalOffset(TickLocationOffset,true);

3.编译测试

 

[展开全文]
那些年踩过的蘑菇 · 2020-02-21 · 0

411

1.在头文件中定义:

public:

UPROPERTY(EditInstanceOnly,Category="My Actor Propertys|Physics")

//声明一个力,用于物体移动

FVector InitForce;

UPROPERTY(EditInstanceOnly,Category="My Actor Propertys|Physics")

//声明一个力矩,用于物体旋转

FVector InitTorque;

UPROPERTY(EditInstanceOnly,Category="My Actor Propertys|Physics")

//声明bool变量,用于对物体施加力或力矩时是否忽略物体质量的影响

bool bAccelChange;

2.在源文件中初始化:

InitForce=FVector(0.0f);

InitTorque=FVector(0.0f);

bAccelChange=false;

3.在源文件中包含头文件:

//可以通过复制UStaticMesh到官方文档中进行查找

#include "Components/StaticMeshComponent.h"

3.在BeginPlay函数中添加:

//物体生成时,施加一次力和力矩

MyStaticMesh->AddForce(InitForce);

MyStaticMesh->AddTorque(InitForce);

4.修改BeginPlay函数:

//修改了bAccelChange为true,忽略物体质量的影响

MyStaticMesh->AddForce(InitForce,"NAME_None",bAccelChange);

MyStaticMesh->AddTorque(InitForce,"NAME_None",bAccelChange);

 

[展开全文]
那些年踩过的蘑菇 · 2020-02-20 · 0

410

1.启用物理模拟,在Details中的Physics下勾选Simulate Physics

2.取消重力,在Details中的Physics下不勾选Enable Gravity,重力取消,物体不会下落但是其物理模拟现象仍然存在,比如发生碰撞仍会移动和旋转

3.按键盘上的~调出控制台,输入show Collision,显示碰撞体

[展开全文]
那些年踩过的蘑菇 · 2020-02-20 · 0

409

1.在level中选中BP_MyActor,双击进入网格体编辑器,为网格体模型添加一个凸包的简单碰撞,collision菜单->auto convex collision

[展开全文]
那些年踩过的蘑菇 · 2020-02-20 · 0

408

1.不要将UStaticMesh * MyStaticMesh的UPROPERTY()设置为EditAnywhere,不然会有意想不到的效果

2.在FVector TickLocationOffset变量的UPROPERTY()中添加:

meta=(ClampMin=-5.0f,ClampMax=5.0f,UIMin=-5.0f,UIMax=5.0f)

[展开全文]
那些年踩过的蘑菇 · 2020-02-20 · 0

404

1.在资源区下载model.zip素材文件

2.导入model.zip中的素材文件

3.xyz模型拖入level中,位置归零

4.BP_MyActor拖入level中,位置归零并应用iconSphere网格体模型

5.视口中导航到合适的位置,世界大纲中选中PlayerStart,右键选择对齐物体到视口(snap object to viewport)

 

[展开全文]
那些年踩过的蘑菇 · 2020-02-20 · 0

407

1.在头文件中声明3个变量:

public:

UPROPERTY(VisibleDefaultsOnly,Category="My Actor Propertys|Vector")

FVector WorldOrigin;

UPROPERTY(EditAnywhere,Category="My Actor Propertys|Vector")

FVector TickOffsetLocation;

UPROPERTY(EditAnywhere,Category="My Actor Propertys|Vector")

bool bMove;

2.在源文件中初始化

WorldOrigin = FVector (0.0f);

TickOffsetLocation = FVector (0.0f);

bMove = false;

3.修改Tick函数:

if(bMove ){

 AddActorRelativeOffset(TickOffsetLocation );

}

[展开全文]
那些年踩过的蘑菇 · 2020-02-20 · 0

406

1.在MyActor头文件中声明两个成员变量:

public:

UPROPERTY(VisibleInstanceOnly,Category="My Actor Propertys|Vector")

FVector PlacedLocation;

UPROPERTY(EditDefaultsOnly,Category="My Actor Propertys|Vector")

//声明bool变量时,变量名必须以小写b开头(UE4要求)

bool bGotoInitLocation;

2.在MyActor源文件中进行初始化

PlacedLocation=FVector(0.0f);

bGotoInitLocation=false;

3.修改BeginPlay函数:

PlacedLocation=GetActorLocation();

if(bGotoInitLocation){

SetActorLocation(InitLocation);

}

 

[展开全文]
那些年踩过的蘑菇 · 2020-02-20 · 0

405

1.在level中将BP_MyActor拖拽到任意位置

2.在MyActor.cpp中的BeginPlay函数下添加:

SetActorLocation(FVector(0.0f));

3.启动引擎,观察BP_MyActor的位置

4.在MyActor.h中添加一个成员变量声明:

public:

//将成员变量添加到UE的反射和垃圾回收机制中

UPROPERTY(EditInstanceOnly,Category="My Actor Propertys|Vector")

//声明一个初始位置变量

FVector InitLocation;

5.在MyActor.cpp中的构造函数中对InitLocation进行初始化:

InitLocation = FVector(0.0f);

6.修改BeginPlay函数:

SetActorLocation(InitLocation);

7.编译后观察Details中和BP_MyActor模板中,EditInstanceOnly是如何起作用的

8.修改Details中的InitLocation中的值并启动引擎测试

 

 

[展开全文]
那些年踩过的蘑菇 · 2020-02-20 · 0

403

1.在自定义C++类MyActor中的MyActor.h头文件中添加组件声明

pulic:

//将成员变量添加到UE反射与垃圾回收机制中去

UPROPERTY(VisibleAnywhere,Category="My Actor Components")

//声明了一个UStaticMeshComponent类型的指针

UStaticMeshComponent * MyStaticMesh ;

2.在MyActor.cpp源文件的构造函数中对UStaticMeshComponent * MyStaticMesh进行初始化: 

MyStaticMesh=CreateDefaultSubobject<UStaticMeshComponent>(TEXT("MyStaticMesh"));

[展开全文]
那些年踩过的蘑菇 · 2020-02-20 · 0

402

1.BP_MyActor蓝图类中会默认一个DefaultSceneRoot根组件用于标识transform

2.在BP_MyActor蓝图类中通过Add Component添加一个StaticMesh组件,并应用一个Cube BasicShape

3.拖拽3个BP_MyActor到Level中生成3个实例,并赋予3个不同材质

4.更改BP_MyActor的StaticMesh组件形状Sphere BasicShape

5.更改BP_MyActor的StaticMesh组件材质

[展开全文]
那些年踩过的蘑菇 · 2020-02-20 · 0

401

1.创建新的自定义C++类MyActor继承于Actor

Tips:

派生自Actor的类带有A前缀,如AController

派生自Object的类带有U前缀,如UComponent

Enums的前缀是E,如EFortificationType

Interface的前缀通常是I,如IAbilitySystemInterface

Template的前缀是T,如TArray

派生自SWidget的类(Slate UI)带有前缀S,如SButton

其他类的前缀为字母F,如FVector

2.创建新的蓝图类BP_MyActor继承于MyActor

 

 

 

[展开全文]
那些年踩过的蘑菇 · 2020-02-20 · 0

//在Editor中限制最大值,最小时

UPROPERTY(EditDefaultsOnly, Category = "My Actor Propertys | Vector", meta = (ClampMin = -5.0f, ClampMax = 5.0f, UIMin = -5.0f, UIMax = 5.0f)

 

UCLASS()

class STATICMESHSAMPLE_API AMyActor : public AActor

{

GENERATED_BODY()

 

public:

// Sets default values for this actor's properties

AMyActor();

 

    UPROPERTY(VisibleAnyWhere, Category = "My Actor Components")

    UStaticMeshComponent *StaticMesh;

    

    //大多数属性都有 Edit 和 Visible, 但是 VisiableAnyWhere 不推荐使用 Edit 属性

    UPROPERTY(EditInstanceOnly, Category = "My Actor Propertys | Vector")

    FVector InitLocation;

    

    UPROPERTY(VisibleInstanceOnly, Category = "My Actor Propertys | Vector")

    FVector PacedLocation;

    

    UPROPERTY(EditDefaultsOnly, Category = "My Actor Propertys | Vector")

    bool bGotoInitLocation;

    

    UPROPERTY(VisibleDefaultsOnly, Category = "My Actor Propertys | Vector")

    FVector WorldOrigin;

 

    UPROPERTY(EditAnywhere, Category = "My Actor Propertys | Vector", meta = (ClampMin = -5.0f, ClampMax = 5.0f, UIMin = -5.0f, UIMax = 5.0f))

    FVector TickLocationOffset;

 

    UPROPERTY(EditAnywhere, Category = "My Actor Propertys | Vector")

    bool ShouldMove;

protected:

// Called when the game starts or when spawned

virtual void BeginPlay() override;

 

public:

// Called every frame

virtual void Tick(float DeltaTime) override;

 

};

[展开全文]
飞天遇见妞 · 2020-02-09 · 0

选中物体后

快捷键 W 移动

E旋转

R缩放

[展开全文]
ikeep · 2020-02-08 · 0