Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 디자드
- Enhanced Input System
- flask
- 알고풀자
- Express
- Ajax
- 게임개발
- 스마일게이트
- 프린세스메이커
- 으
- 언리얼뮤지컬
- 미니프로젝트
- 언리얼프로그래머
- 프메
- 카렌
- 정글사관학교
- 레베카
- 스터디
- Bootstrap4
- JWT
- VUE
- node
- Jinja2
- 언리얼
- EnhancedInput
- 마인크래프트뮤지컬
- 데이터베이스
- 파이썬서버
- Unseen
- R
Archives
- Today
- Total
Showing
[언리얼] p = p0 + vt 이동로직 블루프린트와 c++로 작성하기 본문
P0는 위치를 표현하기 위한 자료형으로 벡터를 사용한다.
위의 블루프린트 내용을 c++로 tick 함수 내로 만드면 아래와 같다.
// Called every frame
void AActor_Coding::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
// 앞으로 계속 이동하고 싶다.
// P = P0 + vt
FVector P0 = GetActorLocation();
FVector vt = GetActorForwardVector() * 500 * DeltaTime;
FVector P = P0 + vt;
SetActorLocation(P);
}
상세한 주석은 아래와 같다.
// Called every frame
void AActor_Coding::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
// 앞으로 계속 이동하고 싶다.
// P = P0 + vt
// 현재 위치를 구하자
FVector P0 = GetActorLocation();
// 이동 속도를 구하자
FVector vt = GetActorForwardVector() * 500 * DeltaTime;
// 이동 시키자
FVector P = P0 + vt;
SetActorLocation(P);
}
Move라는 함수로 직접 정의해보자
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Actor_Coding.generated.h"
UCLASS()
class CODING_API AActor_Coding : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AActor_Coding();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
// 특정 방향으로 이동하는 함수(기능)을 만들고 싶다.
// 반환 자료형 함수이름(매개변수...)
void Move(FVector Direction);
};
#include "Actor_Coding.h"
// Sets default values
AActor_Coding::AActor_Coding()
{
// 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;
}
void AActor_Coding::BeginPlay()
{
Super::BeginPlay();
}
// Called every frame
void AActor_Coding::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
// 함수이름(인자값);
Move(GetActorForwardVector());
}
void AActor_Coding::Move(FVector Direction)
{
// 앞으로 계속 이동하고 싶다.
// // P = P0 + vt
// // 현재 위치를 구하자
FVector P0 = GetActorLocation();
// 이동 속도를 구하자
float t = GetWorld()->DeltaTimeSeconds;
FVector vt = Direction * 500 * t;
// 이동 시키자
FVector P = P0 + vt;
SetActorLocation(P);
}
이렇게 만든 C++ Move 함수 존재를 언리얼엔진이 알 수 있도록
UFUNCTION(BlueprintCallable) 를 작성해준다.
void Move(FVector Direction);
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "Actor_Coding.generated.h"
UCLASS()
class CODING_API AActor_Coding : public AActor
{
GENERATED_BODY()
public:
AActor_Coding();
protected:
virtual void BeginPlay() override;
public:
virtual void Tick(float DeltaTime) override;
UFUNCTION(BlueprintCallable)
void Move(FVector Direction);
};
직접 제작한 MOVE 함수를 블루프린트에서 컴파일한 뒤에, 공이 올라가는 것을 확인할 수 있다!
'Unreal' 카테고리의 다른 글
[Unreal] 언리얼 좌표계 Pitch, Roll, Yaw 이해와 짐벌락 이슈 해결 (0) | 2023.10.23 |
---|---|
[Unreal] Meta Human 제작 후 언리얼 3D 캐릭터에 입히기 (0) | 2023.10.20 |
[언리얼] Unreal C++로 Player를 쫓아오는 Enemy 구현 (0) | 2023.10.19 |
「Unreal」 vr painting 프로젝트 사전조사 (1) | 2023.10.18 |
[Unreal] 언리얼 git 세팅 (0) | 2023.10.04 |