5654人加入学习
(18人评价)
【旧版】Unreal初级课程 - 3D吃豆人

旧版课程,制作完成于2018-03-29,基于Unreal 4.18

价格 免费
// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Components/SphereComponent.h"
#include "Components/StaticMeshComponent.h"
#include "Collectables.generated.h"

UCLASS()
class PACMAN_API ACollectables : public AActor
{
	GENERATED_BODY()
	
public:	
	// Sets default values for this actor's properties
	ACollectables();

protected:
	// Called when the game starts or when spawned
	virtual void BeginPlay() override;

public:	
	// Called every frame
	virtual void Tick(float DeltaTime) override;
	// EditDefaultsOnly 可以在编辑器里面编辑,EditDefaultsOnly 只能对其原型进行修改;Category 分类
	UPROPERTY(EditDefaultsOnly, Category = Collectable)
	UStaticMeshComponent* CollectableMesh;

	UPROPERTY(EditDefaultsOnly, Category = Collectable)
	USphereComponent* BaseCollisionComponent;
	
	// EditAnyWhere 不仅可以对其原型进行修改,还可以对其实例修改
	UPROPERTY(EditAnywhere, Category = Collectable)
	bool bIsSuperCollectable;

};
// Fill out your copyright notice in the Description page of Project Settings.


#include "Public/Collectables.h"
#include "Public/UObject/ConstructorHelpers.h"

// Sets default values
ACollectables::ACollectables()
{
 	// Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
	// 等于true,会使得下面这个函数(Tick)每帧运行,这个是豆的,不需要这个,设置成false
	PrimaryActorTick.bCanEverTick = false;
	// 开启碰撞功能(默认不开启碰撞功能)
	SetActorEnableCollision(true);
	// 创建网格组件
	CollectableMesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("CollectableMesh"));
	// 创建碰撞体组件
	BaseCollisionComponent = CreateDefaultSubobject<USphereComponent>(TEXT("BaseCollisionComponent"));
	// 将 碰撞体 和 网格 绑定到一起
	CollectableMesh->AttachTo(BaseCollisionComponent);
	// 使用 ConstructorHelpers 需要引入的头文件:#include "Public/UObject/ConstructorHelpers.h"        找到了想要的变成的球体
	static ConstructorHelpers::FObjectFinder<UStaticMesh> Sphere(TEXT("StaticMesh'/Engine/BasicShapes/Sphere.Sphere'"));
	if (Sphere.Succeeded())
	{
		CollectableMesh->SetStaticMesh(Sphere.Object);
	}
	// 指定球的大小和尺寸
	CollectableMesh->SetWorldScale3D(FVector(0.3, 0.3, 0.3));
	BaseCollisionComponent->SetSphereRadius(16);
}

// Called when the game starts or when spawned
void ACollectables::BeginPlay()
{
	Super::BeginPlay();
	
}

// Called every frame
void ACollectables::Tick(float DeltaTime)
{
	Super::Tick(DeltaTime);

}

// 等于true,会使得下面这个函数(Tick)每帧运行,这个是豆的,不需要这个,设置成false

PrimaryActorTick.bCanEverTick = true;

 

使用UStaticMeshComponent 需要引入的头文件:

#include "Components/StaticMeshComponent.h"

 

使用 ConstructorHelpers 需要引入的头文件:

#include "Public/UObject/ConstructorHelpers.h"

[展开全文]

授课教师

SIKI学院老师

课程特色

图文(1)
下载资料(1)
视频(30)

学员动态