언리얼 공부 21

일반탄환, 관통탄, 폭발탄

저번에 만든 탄환을 베이스로 3종류의 총알을 만들것이다.1. 일반탄 - 적이나 구조물에 충돌하면 사라지고 적에게 피해를 줌2. 관통탄 - 구조물에 맞으면 사라지지만 적에게 맞으면 피해를 주고 뚫고 지나감3. 폭발탄 - 적이나 구조물에 맞으면 폭발하고 범위피해를 줌 이렇게 3가지의 온힛을 가진 총알들을 만들어보겠다.1. 일반탄환일반탄환은 액터에 부딪히면 사라지게 하고싶고, 부딪힌 액터가 적이라면 데미지를 주고싶다. ANomalBullet::ANomalBullet(){ Speed = 1000.0f; BulletDamage = 0.0f;}//적이나 구조물 중 하나에 부딪히면 사라짐void ANomalBullet::OnHit( UPrimitiveComponent* OverlappedComponent, AActo..

총알만들기

총알구조총알도 3종류로 만들것이다. 일반탄, 적은 뚫고 지나가는 관통탄, 무언가에 닿으면 폭발하는 로켓그 3 종류의 총알이 모두 필요한것을 일단 만들것이다.총알 생성총알 날라가기총알 적중부모클래스 헤더파일 만들기#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Components/SphereComponent.h"#include "BulletBase.generated.h"UCLASS()class SHADOW_OF_THE_DESERT_API ABulletBase : public AActor{ GENERATED_BODY() public: ABulletBase();protected: virtual void BeginPla..

총 만들기

총 구조총은 하나만 쓸 게 아니라 여러개를 사용할 것 이라고 말했듯이 무기마다 다른건 하위 클래스에서 설정할것이고, 모두가 같이 사용할것은 기본 속성 설정공격력, 현재 탄약, 최대 탄약, 재장전 상태, 공격 속도재장전 기능재장점 함수는 아마 다들 비슷할것이다. 일정시간 후에 총알이 최대치가 되고 총알이 최대치면 재장전이 안되는부모클래스 헤더파일 만들기#pragma once#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Bullet/BulletBase.h"#include "WeaponBase.generated.h"UCLASS()class SHADOW_OF_THE_DESERT_API AWeaponBase : public AActor{ GE..

순수가상함수, 추상클래스 그리고 인스턴스

이 글을 적는 이유는 혼자서 비주얼 스튜디오에서 할 때에는 오류가 걸리지 않는 부분이라고 생각했던 게 언리얼에서 오류에 걸려 왜 걸리는지 이해를 못해 찾아보는데 시간을 많이 써서 적게되었다...순수 가상 함수virtual키워드와 =0으로 선언하는데virtual void func() = 0;추상클래스를 정의하는 데 사용되며, 반드시 파생되는 자식클래스에서 구현을 해야한다.이런 개념인데 말 그대로 절대로 빼먹으면 안되는 그런 함수를 포함할 때 사용된다. 추상클래스순수 가상함수를 최소 하나 포함한 클래스다.일반 메서드와 멤버 변수를 포함할 수 있다.class Gun { public: virtual void func() = 0 // 순수가상함수 };이런식으로 되면 이 클래스는 추상클래스가 되는것이다..

플로우 차트

플로우 차트란?게임의 구조와 흐름을 시각적으로 표현하는 도구다.쓰면 뭐가 좋을까?시각적 이해게임의 전반적인 흐름을 한눈에 이해할 수 있게 도와준다.커뮤니케이션플로우차트를 사용하면 개발자, 디자이너, 작가 등 다양한 팀원 간의 커뮤니케이션이 원활해지고, 서로의 이해도를 높이고, 아이디어를 공유하는 데 유용하다.문제 발견게임의 흐름을 시각적으로 표현함으로써, 문제가 발생할 수 있는 지점을 사전에 발견하고 수정할 수 있다. 이는 개발 과정에서의 오류를 줄이는 데 도움을 준다.개발 일정 관리게임의 각 단계와 요소를 시각적으로 정리함으로써, 개발 일정을 보다 체계적으로 관리할 수 있다. 각 요소의 우선순위를 정하고, 필요한 리소스를 배분하는 데 유리하다.플로우차트는 어떤 룰이 있을까?사실 정해진 정답은 없다. 하..

FPS무기 구조 생각

나는 FPS게임의 무기를 만들것이다.내가 만드려고하는 무기 종류는 총 3종류 소총, 스나이퍼, 로켓런처다.처음에 구조를 짜려고 하니 감이 안잡혀서 이런 저런 글들을 찾아봤다.나는 무기, 공격 전략, 총알 이렇게 총 3개로 나눠보았다.1. 무기무기는 우선 무기의 기본적인 스탯들을 담당한다.공격력, 최대 장탄 수, 현재 장탄 수, 장전, 최대 보유 가능 탄약 개수, 현재 보유중인 탄약 개수 등의 어떤 종류에도 필수로 들어가야하는 것들을 넣어 베이스 무기를 만들것이고 이걸 팩토리 패턴을 이용하여 다양한 종류의 무기를 쉽게 만들 수 있도록 할 것 이다. 복습하자면팩토리 패턴이란?공장에서 물건을 찍어내듯 객체를 생성하는 방식이라고 보면 된다.공장에서 단 하나의 제품만을 찍어내지 않지만 같은 종류의 같은 카테고리의..

일정 주기로 나왔다 사라지는 발판

재료발판 액터발판 활성화발판 비활성화발판 유지시간발판 주기헤더파일#pragma once#include "CoreMinimal.h"#include "FloorBase.h"#include "CH_Timer.generated.h"UCLASS()class SETTING_API ACH_Timer : public AFloorBase{ GENERATED_BODY()public: ACH_Timer();protected: virtual void BeginPlay() override;public: virtual void Tick(float DeltaTime) override; FTimerHandle TimerHandle; //발판 활성화 주기 UPROPERTY(EditAnywhere, BlueprintReadWrite, ..

2주간 WIL 정리

프로젝트 준비프로젝트 생성 및 세팅비쥬얼 스튜디오와 연동디버깅 및 빌드 개념 이해언리얼 빌드 프로세스 이해액터액터 생성.액터 컴포넌트 설정위치(루트)모양(스태틱 매시)외형(머리티얼)액터의 라이프 사이클 이해생성활동죽음액터의 회전액터의 반복 이동액터 일정 주기마다 생성 및 제거캐릭터캐릭터 구현스켈레탈 매시캡슐스프링암카메라캐릭터 액션입력바인딩(입력값과 불러올 동작 연결)동작애니메이션 설정State_Machine폰클래스캐릭터 만들기루트 컴포넌트 설정캡슐입히기스켈레탈 매쉬(루트 컴포넌트 따라가기)스프링 암(루트 컴포넌트 따라가기)카메라(스프링 암 따라가기)액션이동(카메라가 바라보는 기준으로 이동하기)카메라 전환점프(안됨 중력을 먼저 구현해야되나봄)중력 및 물리 적용(뭐가 안되는지 모르겠음 다들 로그는 출력넣으면..

언리얼 공부 2025.02.03

액터 회전, 반복 이동

이건 블루프린트로 예전에 해본적 있는걸 C++코드로 바꾸는 것 뿐이다. 이걸로 언리얼 C++에 더 익숙해지는 숙련도라고 생각하고 최대한 전부 다 타자로 끝까지 쳤다.회전회전을 위해 필요한 재료를 생각해보자.1. 돌아갈 액터(저번에 만든거 상속 클래스)2. 회전 함수3. 회전 속도4. Tick(매 프레임마다 작동하는거)이정도라고 볼 수 있다. 나는 여기서 욕심을 한스푼 더 섞어서5. 회전할 축까지 넣어보도록 하겠다.헤더파일우선 위에서 말한것들을 선언해보자.#pragma once#include "CoreMinimal.h"#include "FloorBase.h"#include "CH_Rotation_1.generated.h"UCLASS()class SETTING_API ACH_Rotation_1 : publi..

C++클래스로 액터 생성하고 컴포넌트 추가하기.

1. 헤더파일#include "CoreMinimal.h"#include "GameFramework/Actor.h"#include "Item.generated.h"일단 이 3개를 가져와준다CoreMinimal.h : 코어 미니멀 이란 이름에 맞게  언리얼 엔진의 기본 클래스를 포함한다. 필수적인 기본 기능들을 제공.GameFramework/Actor.h : 이 클래스가 Actor기반의 클래스라는 걸 나타낸다.Item.generated.h : Unreal Tool에서 만들어준것으로 언리얼 엔진의 매크로와 기능을 활용하기 위해 필요 그리고 무조건 무조건 #include의 맨 마지막에 있어야된다 안그러면 버그가난다.UCLASS()class SETTING_API AItem : public AActor{ GENER..