c++는 언리얼의 스크립트 언어이다. 게임 뿐만 아니라 시스템, 게임 프로그래밍에 자주 쓰인다 이유는 속도가 매우 빠르다.입문하기 어려워보이지만 화이팅!비쥬얼 스튜디오-> 새 프로젝트 만들기-> 콘솔 앱 만들기 : Game1으로 이름 짓는다!처음 보이는 화면은 hell
저번시간에 이어 엑터를 상속받는 자식, 캐릭터와 Enemy를 작성해본다!다음은 character에 대한 cpp코드!아래는 Enemy의 헤더소스!마지막으로 Enemy의 소스파일모든 코드를 종합하여 main 코드를 작성한다.이번 시간엔 정말 오랜만에 main코드 안에다가
언리얼에서의 엑터? \-> 배치 가능한 물체게임 모드: 게임의 규칙을 관리하는 것디폴트 폰 클래스: 처음으로 조종할 객체hud 클래스: 계속 떠있는 UI(거의 사용하지 않음)플레이어 컨트롤러 클래스: 우리에게 직접 입력을 받아 디폴트 폰 클래스에게 전달게임 스테이트 클
블루프린트 클래스란? 블루프린트는 직관적인 노드 기반 인터페이스를 통해, 코드를 한 줄도 작성하지 않고도 디자이너와 게임플레이 프로그래머가 개로운 액터 및 스크립트 레벨 이벤트를 쉽게 만들고 수정할 수 있게 한다. 즉, 언리얼의 모든 기능은 C++ 코드로 짜여져 있으며
이번 시간엔 1인칭 프로젝트를 만들어 c++코드를 살펴보고자 한다!Class2_2 이름으로 생성하고,파일 탐색기에서 Class2_2.sln을 실행시켜 준다(모든 파일을 보기 위함)이 부분은 초기에도 말했듯이 리플렉션을 사용하기 위해 쓰는 것인데 리플렉션이란 프로그램이
오늘은 직접 TPS 캐릭터를 만들어보는 시간을 가지도록 하겠습니다 먼저 c++하나를 MyCharacter 이름으로 만들어 줍니다. 해당 클래스는 나와 적을 만들때 사용하는 클래스이기도 합니다! MyCharacter.h 파일의 내용입니다 가장 먼저 변수들을 선언 했는데
총과 총알 작성부터 나에겐 굉장한 멘붕이었다. 난이도가 너무 높았다. 먼저 작성한 bullet.h 의 코드를 정리해본다다음은 bullet.cpp를 작성해본다. 여기가 매우 어렵다다음은 총의 주인인 weapon.h를 작성해본다총알이 어렵듯이 총도 어려웠다. weapon.
나는 분명 강의마다 빠지는거 없이 잘 적었다고 생각했는데 뭔가 안적고 넘어가고 틀리게 적는 부분이 다소 있었나 보다.선생님이 바로 주신 코드인데 선언한 변수가 나만 없다니.,. 선생님이 빼먹었다고 해줘요,,InputMappingContext를 찾을 수 없어서 튜터님께
CLASS의 종류Actor: 월드에 배치될 수 있는 것, 시각적 표현을 할 수 있는 기능 포함Pawn: 액터 클래스의 모든 속성을 상속받는다. 단, 컨트롤러에 의해 소유될 수 있다는 점과 같은 추가 속성은 제외한다. 움직임 입력을 처리할 수 있다.Character: 폰
베이스 폰 클래스에 컴포넌트가 필요하다는 것을 알게 되었다!탱크와 포탑 아랫부분의 베이스 메시가 필요하며 윗 부분의 매시도 있어야 한다.콜리전을 처리할 캡슐과 발사체 스폰 포인트도 있어야 한다. BasePawn을 기반으로 탱크를 만들고 똑같이 베이스 폰을 기반으로 하는
언리얼 엔진에는 CreateDefaultSubobject<>()가 있다.이는 탬플릿 함수로 탬플릿 함수는 선택된 타입에 적응하기 때문에 특정 타입을 선택하면 CreateDefaultSubobject가 이 타입에 적응한다. 생성하고자 하는 타입을 CreateDefa
언리얼 엔진 타입의 헤더파일에는 한 파일에 여러 번 포함되지 않도록 하는 보호 장치가 있다.바로 이제 탱크를 UStataicMeshComponent로 만들어주자!C++ 만들고 블루프린트 만드는 것의 의미: BasePawn을 기반으로 블루프린트 클래스 만들기를 선택하면
프라이빗 멤버에서 그래프 읽기 및 쓰기 액세스를 사용하는 방법은?UPROPERTY(..., meta=(AllowPrivateAccess="true"))UPROPERTY 매크로를 통해 메타데이터를 사용할 수 있으며 메타데이터는 다른 데이터에 대한 정보를 주는 데이터이다.
앞에서 한 것들을 정리하면 BasePawn 클래스가 있고, 이 클래스에서 두 개의 클래스를 상속할 것이다(탱크, 타워)BasePawn 클래스에는 메시와 캡슐, 스판 포인트가 있는데 이것은 탱크든 타워든 상속할 수 있다.하지만 최종으로 구현할 것은 탱크든 타워든 각각 다
본 프로젝트는 Unreal Learning kit을 사용하여 제작하였습니다!그리고 프로젝트에 Stylized Character을 추가해준뒤 그 속의 blueprint에 들어가 3인칭 캐릭터를 맵에 위치시킵니다! 해당 캐릭터는 밋밋하기 때문에 커스터마이징을 진행하도록 하
먼저 새로운 c++ 파일인 MovingPlatform을 만들어줍니당근본적으로 헤더파일인 .h 파일에 있는 함수와 변수를 추가할 수 있는 블루 프린트와 비슷하고 .cpp파일은 본질적으로 이벤트 그래프와 같다 이번엔 기본적으로 변수만 추가해보았다언리얼에서 c++은 벡터를
오늘은 빙의에 대한 이야기를 다뤄본다.현재 맵에 폰이 많이 있지만 플레이어라고 할 수 있는 폰을 설정해두진 않았다.그래서 저상태로 그냥 실행을 누르게 되면 기본 폰이 작동하여 WASD를 사용하여 맵을 움직일 수 있다. 파란색 탱크를 폰으로 지정하고 싶으면 디테일 창에서
이번 시간에는 탱크를 움직이는 것을 해보려고 한다탱크를 움직이게 하려면 일종의 오프셋을 써야 하는데 언리얼 엔진에서 오프셋을 설정할 때는 어디에 설정하느냐를 정해야 한다. 로컬이냐 월드 스페이스냐?우리가 맵에서 탱크를 클릭할 때 나오는 기즈모는 화면의 왼쪽 하단에 표시
Sweeping게임 프로그래밍에서 스윕 기능은 스윕기능이 켜져 있을 때 엔진으로 작동된다.스윕기능은 특정한 한 프레임에서 움직일 때 두 오브젝트가 겹치는지 확인한다.언리얼에서 스윕 기능을 사용하려면 콜리젼 기능이 활성화 되어 있어야 한다.기대와는 달리 충돌하지 않고 벽
이번 시간엔 마우스 커서가 어디로 움직이든 커서 위치에 따라 닿게 되는 오브젝트에 구가 나타나는 것을 만들어보겠다. 이렇게 만들려면 컨트롤러에 몇 가지 함수가 필요하다 이렇게 만들려면 컨트롤러에 몇 가지 함수가 필요하다. 컨트롤러 함수에 액세스 해야한다 !컨트롤러가 필
오늘의 목표는 커서 위치의 히트 결과를 받아 위치를 표현하는 것! 이것으 디버그 구체를 그려서 할 수 있다.Start라고 부를 점을 FVector 타입으로 만들고 End라고 부를 점은 마찬가지로 스페이스의 한 점이고 FVector 타입이다. Start에서 End까지 보
이번 시간에는 마우스를 사용해 포탑을 회전시켜보자.포탑 조준하는 방향을 구하기 위해서는 벡터 계산이 필요하다. 포탑의 위치를 TurretLocation이라고 하고 트레이스의 위치를 TraceHitLocation이라고 둔다. 우리는 TurretLocation에서 Turr
이번 시간엔 Tower클래스를 만들어서 BasePawn 클래스에서 상속한 탱크의 기능을 상속해보는 시간을 가져보겠다. 탱크 폰의 위치를 변경해서 탱크 폰을 목표로 겨냥해 타워 포탑을 회전할 수 있게 만든다. 탱크가 사정거리 내에 있는지 확인하려면 포탑과 탱크 간의 거리
Fire 함수를 만들고 이 함수를 마우스 왼쪽버튼과 연결해보겠다.발사체를 스폰할 때 사용하는 함수이다. Fire 함수를 만들고 이 함수를 동작 매핑에 바인딩하도록 하겠다축 매핑처럼 동작 매핑에도 함수를 바인딩해야 한다. 축 매핑은 게임의 모든 프레임마다 실행된다. T
Timers Tower클래스에는 사용자 인풋 대신 타이머를 사용할 것이다. Tower 클래스의 타이머를 만들어서 타이머가 함수를 자주 호출하게 한다. 이를 위해 Fire 함수 호출 사이 간격을 초로 설정한다. 언리얼 엔진에서는 FTimerManager라고 하는 클래스로
발사체에는 스태틱 메시가 필요하다. 그래야 월드에서 스폰할 때 발사체를 볼 수 있기 때문이다.발사체.h발사체.cpp기본적인 ProejctileMesh하나를 만들고 블루프린트 클래스를 하나 만들어 주었다.메시를 골라주면 발사체가 만들어졌다!발사체 생성 액터는 SpawnA
😵💫Hit Events 발사체가 어딘가 부딪치는 걸 감지해서 그 발사체를 파괴하는 방식으로 만들고 싶다. 나중에는 데미지를 입히거나 폭발 효과를 주는 것을 할 것이다. 발사체에는 메시 컴포넌트가 있다. 타입은 UStaticMeshComponent이고 UStatic
언리얼 엔진에는 AGameMode라는 클래스가 존재한다. AGameMode의 부모는 AGameModeBase이고 AGameMode보다 조금 더 기본적이다. 언리얼 엔진에서 게임 모드는 게임의 규칙을 다루는데 좋은 기능이다. 월드의 어떤 액터가 죽을 때 게임 모드가 대처
플레이어 이동애니메이션슈팅Health/Death적 AI승패 조건폰은 플레이어로서 우리들이 소유(제어)할 수 있는 모든 것을 말한다.캐릭터도 역시 폰이며 폰 클래스로부터 직접 상속 된다. 그래서 폰이 할 수 있는 모든 것을 할 수있다. 그리고 더 많은 것을 할 수 있어
둘의 차이를 명확하게 알기 위해서 2개의 c++ 클래스를 생성하였는데, 하나는 pawn, 하나는 character 기반으로 생성하였다그리고 블루 프린트를 클릭하고 부모로 각각 저 둘을 상속받게 2개를 만들어주었다.Mypawn을 상속받은 블루프린트를 살펴보면 Defaul
현재 프로젝트에 있는 BP_ShooterCharacter에 단순히 카메라만 추가해보겠다.그러면 단순히 보인다. 카메라 사용을 훨씬 개선해주는 스프링암을 달아줘야 한다. 그전에 회전도 자연스럽지 않기 때문에 카메라 컴포넌트로가서 회전 문제를 해결하고자 한다!여기서 폰 제
🧬Collision 콜리전이란 월드에 있는 단순화된 메시며 이걸로 우린 물리적 계산을 할 수 있다. 현재 맵으로 콜리전의 세계를 보도록 하겠다 이 모습은 비저빌리티 콜리전을 활성화 했을때 보이는 메시들의 모습이고 이것은 플레이어 콜리전을 활성화 했을 때 보이는 모
UE5에서 '블루프린트'라는 단어는 두 가지 다른 의미로 사용될 수 있다. 하나는 UE5의 비주얼 스크립팅 언어 또는 에셋의 특정 타입을 의미하며, 다른 하나는 블루프린트 클래스 또는 블루프린트 에셋을 의미한다. 액터는 레벨에 배치할 수 있는 물체다. 이 물체는 C++
프로젝트 디렉토리에서 Content폴더를 확인할 수 있다. 이 폴더는 여러 유형의 에셋 및 프로젝트 관련 데이터(블루프린트 포함)에 사용하는 폴더다. C++코드는 프로젝트의 Source 폴더에 위치한다. 언리얼 엔진의 모든 c++ 프로젝트는 비주얼 스튜디오 솔루션을
레벨 디자인이란?❗게임 내에서 플레이어가 경험할 수 있는 환경과 구조를 만드는 과정입니다. 플레이어의 경로, 도전, 그리고 스토리를 설계하며, 게임플레이의 재미와 균형을 조화롭게 담아내야합니다. 레벨 디자인은 시각적 요소의 배치를 넘어, 플레이어 경험의 핵심을 설계하는
애니메이션은 게임에 생동감을 불어넣기 위해 필수적인 요소다. 뛰어난 애니메이션은 보통 수준의 게임과 훌륭한 게임ㅇ르 구분하는 주요 요소 중 하나이다. 애니메이션 블루프린트는 스켈레탈 메시의 애니메이션을 제어할 수 있는 기능을 제공하는 블루프린트의 한 종류이다. 애니메이
언리얼 캐릭터 클래스 상속은 한 클래스가 다른 클래스로부터 특징과 동작을 파생하는 과정을 말한다. C++ 클래스를 확장하면 새로운 파생 클래스를 만들 수 있다. 이렇게 생성된 클래스는 상속한 클래스(기반 클래스)의 속성을 유지할 수 있으며 해당 속성을 수정하거나 새로
이번 시간에는 네모친 레벨에서 진행하도록 한다.폴더를 따로 만들어준 뒤, 블루프린트 클래스에서 캐릭터를 생성해준다블루 프린트 클래스를 더블 클릭하여 확인하면 캡슐이 존재하고, 컴포넌트로는 캡슐 컴포넌트, 화살표 컴포넌트, 메시, 캐릭터 무브먼트가 존재한다캐릭터 블루프린
블랜드 스페이스는 아는 내용이니 조금 넘어가고.. ABP_NBC_Character에 speed 변수를 하나 만들어준다. 현재 속도를 저장해주는 변수이다이걸 speed에 연결해준다이렇게 설정해주고 ABP_NBC_Character의 블루프린트 이벤트 그래프로 이동한다‘AB
강의에서 배운대로 이렇게 Tick 함수에서 매 프레임마다 addActorRotation을 사용해서 z축 기준으로 회전시키는데 이게 로컬 기준이라 z축을 기준으로 제자리에서 빙글빙글 돈다. 위에 setWorldLocation에서 이미 큐브를 radius 방향 만큼 떨어진
르탄이의 애니메이션을 경우에 따라 다르게 적용하기 위해 state machine이라는 것을 하나 만들었다. 캐스트인 경우 변환이 가능한 경우 이것을 BP_Character로 전달해준다.여기서 르탄이가 떨어지는 애니메이션을 재생할 때의 조건이 필요한데, 이것은 이벤트 그
게임 모드 제작과 맵 생성은 너무 기초인 이야기인지라 넘어가도록 하겠다새 C++ 클래스를 폰을 부모로 하여 생성하고 이름은 PlayerPawn이라고 저장한다. Pawn클래스도 Actor 클래스를 상속받은 클래스이기 때문에 Pawn 클래스를 상속받은 PlayerPawn클