zoukankan      html  css  js  c++  java
  • UE4cpp入门

    p1

    FloatingActor.h

    #include "CoreMinimal.h"
    

    此头文件包含UE4核心编程环境的普遍存在类型(包括FString / FName / TArray 等)

    #include "GameFramework/Actor.h"
    

    我们继承自Actor

    #include "FloatingActor.generated.h"
    

    这一行必须在最下面

    p2

    快速入门

    FloatingActor.h

    // Fill out your copyright notice in the Description page of Project Settings.
    
    #pragma once
    
    #include "CoreMinimal.h"
    #include "GameFramework/Actor.h"
    #include "FloatingActor.generated.h"
    
    UCLASS()
    class UE4CPPSTART_API AFloatingActor : public AActor
    {
    	GENERATED_BODY()
    	
    public:	
    	// Sets default values for this actor's properties
    	// 默认构造函数
    	AFloatingActor();
    
    	// 将变量公开到编辑器或蓝图
    	// VisibleAnywhere 修饰符设置该属性在任何地方都可见
    	UPROPERTY(VisibleAnywhere)
    		UStaticMeshComponent* VisualMesh;
    
    	// 添加变量进行控制
    	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "FloatingActor")
    		float FloatSpeed = 20.0f;
    
    	UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "FloatingActor")
    		float RotationSpeed = 20.0f;
    
    protected:
    	// Called when the game starts or when spawned
    	virtual void BeginPlay() override;
    
    public:	
    	// Called every frame
    	virtual void Tick(float DeltaTime) override;
    
    };
    

    FloatingActor.cpp

    // Fill out your copyright notice in the Description page of Project Settings.
    
    
    #include "FloatingActor.h"
    
    // Sets default values
    AFloatingActor::AFloatingActor()
    {
     	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
    	PrimaryActorTick.bCanEverTick = true;
    
    	// 创建一个指向该组件的指针
    	VisualMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));
    	// 把静态网格体组件附加到 RootComponent 上
    	VisualMesh->SetupAttachment(RootComponent);
    
    	/* 在编辑器中选择mash会更好
    	// 去资源文件夹下查找一个资源并加载
    	static ConstructorHelpers::FObjectFinder<UStaticMesh> CubeVisualAsset(TEXT("/Game/StarterContent/Shapes/Shape_Cube.Shape_Cube"));
    
    	if (CubeVisualAsset.Succeeded())
    	{
    		VisualMesh->SetStaticMesh(CubeVisualAsset.Object);
    		VisualMesh->SetRelativeLocation(FVector(0.0f, 0.0f, 0.0f));
    	}
    	*/
    }
    
    // Called when the game starts or when spawned
    void AFloatingActor::BeginPlay()
    {
    	Super::BeginPlay();
    	
    }
    
    // Called every frame
    void AFloatingActor::Tick(float DeltaTime)
    {
    	Super::Tick(DeltaTime);
    
    	// 获取当前物体的位置
    	FVector NewLocation = GetActorLocation();
    	// 获取当前物体的旋转
    	FRotator NewRotation = GetActorRotation();
    	// 获取当前物体的运行时间
    	float RunningTime = GetGameTimeSinceCreation();
    	//位置和旋转变换的代码
    	float DeltaHeight = (FMath::Sin(RunningTime + DeltaTime) - FMath::Sin(RunningTime));
    	NewLocation.Z += DeltaHeight * FloatSpeed;          //按FloatSpeed调整高度
    	float DeltaRotation = DeltaTime * RotationSpeed;    //每秒旋转等于RotationSpeed的角度
    	NewRotation.Yaw += DeltaRotation;
    	SetActorLocationAndRotation(NewLocation, NewRotation);
    
    }
    

    TODO

    https://www.bilibili.com/video/BV14K411J7v2?p=3

    https://docs.unrealengine.com/zh-CN/ProgrammingAndScripting/ProgrammingWithCPP/CPPProgrammingQuickStart/index.html

  • 相关阅读:
    02 树莓派的远程连接
    01 树莓派系统安装
    Python正课110 —— Django入门
    作业7 答案
    作业8
    作业7
    作业6
    文件操作
    字符编码
    基本数据类型之集合
  • 原文地址:https://www.cnblogs.com/karlshuyuan/p/14687051.html
Copyright © 2011-2022 走看看