언리얼 36

언리얼 데미지 텍스트

액터 블루프린트를 하나 생성하고 이름은 MonsterDamageTextBP로 한다. 텍스트 렌더 컴포넌트를 하나 추가하고 이름은 TextRender로 한다. 가로 정렬, 세로 정렬을 Center로 하여 텍스트가 가운데로 오도록 한다. 변수를 하나 추가하고 이벤트그래프에서 노드를 다음과 같이 연결한다. 현재 위치를 setPos에 저장한 뒤 타임라인의 x축만큼 setPos Z값에 더한 벡터를 텍스트의 위치로한다. 이 때 타임라인은 다음과 같이 설정하여 0.7초가 지났을 때 1.1초까지 값이 증가하도록 하여 실질적으로 텍스트가 해당 위치에서 0.7초부터 1.1초까지 z위치가 증가하도록 해준다. 함수를 하나 생성하고 이름은 Set Damage Text로 한다. 해당 함수는 정수형 변수 Damage를 인자로 받아..

언리얼 블루프린트 보스 HP바

다음과 같이 캔버스 패널을 하나 추가하고 그 자식들로 프로그래스바와 이미지를 추가한다. 이후 디테일 패널에서 캔버스 패널을 변수로 사용할 수 있도록 변수여부를 체크해준다. 프로그레스바가 체력에 따라 바뀌는 함수를 하나 생성한다. 보스 이미지를 변경하는 함수를 제작한다. 게임 인스턴스에서 함수를 하나 생성한다. 해당 함수는 인자 isShow가 true일 경우 보스 패널이 보이고 false일 경우 패널을 Hidden하도록 하였다. 보스몬스터 블루프린트에서 GameInstanceRef변수를 하나 생성하고 현재 게임 인스턴스를 GameInstanceRef에 저장하도록 한다. 틱 이벤트에서 보스가 캐릭터와의 거리가 500 이하일 때 쫓아가는 부분의 노드에 Show Boss UI 함수를 연결하고 isShow를 tr..

언리얼 몬스터 HP바

몬스터 머리위에 둘 위젯을 하나 생성하여 이름은 MonsterHPBar로 한다. 프로그레스 바를 하나 생성한 뒤 퍼센트를 1로 맞춘다. 액터 블루프린트를 하나 생성하고 이름은 CharHPBarBP로 한다. 위젯 컴포넌트를 하나 추가하고 위젯 클래스를 방금 만든 MonsterHPBar로 한다. 실행되면 Location이 갱신되는 함수를 하나 만든다. 몬스터 블루프린트로 가서 큐브를 하나 생성하고 이름은 HPBarPosDummy로 한다. 이후 콜리전과 visibility를 꺼준다. BeginPlay이벤트에서 몬스터 hp바 블루프린트를 위에 생성한 dummy위치에 만들도록 한다. 다음 틱 이벤트에 다음과 같이 노드를 연결하여 매 틱마다 hp바의 위치가 갱신되도록 한다. 변수에 프로그레스 바 레퍼런스 변수를 하..

언리얼 블루프린트 MP바 / 스킬 아이콘 / 쿨타임

먼저 UI블루프린트를 하나 생성하고 이름은 ActionBarSlot이라 한다 이미지와 프로그레스 바를 오버레이,보더 안에 넣어준다 쿨타임을 계산하기 위해 2가지 변수를 추가한다 CoolDownTimer : 쿨타임 canuse : 쿨타임이 다 지나고 사용 가능한지 여부 2개의 커스텀 이벤트를 만든다 StartCooldown 이벤트가 실행되고 인자로 받은 쿨타임이 다 지나게 되면 EndCooldown이벤트가 발생하도록 노드를 연결한다. 아래 틱 이벤트에서는 canuse가 false 일 때, 즉 쿨타임이 돌고 있을 때 CooldownBar 프로그레스 바가 작동되도록 한다. 방금 만든 Action Bar Slot UI를 사용자 생성에서 가져와 화면상 적절히 배치해준다 이벤트 그래프로 가서 preConstruct..

언리얼 블루프린트 캐릭터 HP 바

먼저 위젯 블루프린트를 하나 생성한다 이미지에는 캐릭터 이미지를 불러오고 프로그레스 바를 2개 불러와 하나는 빨간색, 하나는 파란색으로 설정한다 함수를 추가하여 다음과 같이 노드를 연결한다 MP바 같은 경우는 텍스트도 포함되어 있기 때문에 다음과 같이 추가로 노드를 연결한다 게임 인스턴스로 가서 노드를 다음과 같이 연결한다. 레벨 블루프린트에서 게임이 시작될 때 방금 만든 위젯을 보여주도록 함수를 실행한다. 캐릭터 블루프린트에서 SideScrollGameInstance변수를 하나 생성하고 게임이 시작될 때 현재 게임 인스턴스를 저장한다 맞았을 때 위에 생성한 함수를 호출하기 위해 AnyDamage이벤트가 발생했을 때 노드를 연결해준다.

언리얼 몬스터 넉백 블루프린트

먼저 몬스터 피격 애니메이션에 노티파이를 추가하고 이름은 OnAnimEnd_Impact로 저장한다 MonsterBP에서 새로운 커스텀 이벤트를 하나 생성한다. MonsterAnimBP로 넘어가서 해당 노티파이에 닿으면 MonsterBP에서 이벤트가 실행되도록 한다. 넉백이라는 몬스터 상태를 추가하기 위해 MonsterState Enum파일로 가서 nuckback상태를 추가해준다 1. 먼저 MonsterBP에서 if의 true로 가는 부분은 hp가 0이하가 되어 몬스터가 사망했을 때 부분이고 false 부분은 피격 부분이다 거기에 피격 애니메이션을 실행시켜주고 상태를 nuckback상태로 바꾸어준다. 2.피격애니메이션이 끝나면 상태가 nuckback으로 고정되어 있기 때문에 다음 상태를 정해주는 로직을 구..

언리얼 이펙트 사운드

언리얼에서는 기본적으로 WAV 파일만을 취급한다. 레벨 사운드 다음과 같이 레벨 사운드로 쓸 파일을 큐 생성으로 새로운 cue를 만들어주고 큐에 들어가서 루핑을 체크하여 노래가 무한 재생되도록 설정한 후 ambient sound에서 사운드를 방금 생성한 cue로 설정한다 이펙트 사운드 캐릭터가 걷는 애니메이션에서 캐릭터 발이 땅에 닿는 부분에 사운드 재생 노티파이를 추가한다 피격 사운드 몬스터 블루프린트에서 몬스터가 피격당하는 부분에 PlaySound 2D 노드를 연결하여 피격 사운드를 재생한다

언리얼 인트로 화면

다음과 같이 인트로 위젯 블루프린트를 하나 제작한다 그리고 Click이라는 이름의 애니메이션을 하나 추가한다 +트랙을 클릭하고 ClickToStart 텍스트를 추가한다 ClickToStart에서 컬러 및 오파시티를 추가하고 0.5초 구간에선 A가 0이 되도록 하고 그 외의 구간에는 1로 설정하여 텍스트가 깜빡이는 효과를 준다 그래프 탭으로 넘어가서 위젯이 시작됐을 때 Click애니메이션을 무한반복 되도록 설정한다 이 때 무한반복은 Play Animation의 Num Loops to Play의 값을 0으로 설정하면 된다 레벨 블루프린트에서는 다음과 같이 게임이 시작했을 때 방금 생성한 인트로 위젯이 보이도록 Add to Viewport 노드와 연결해준다 backgroundImage도 애니메이션을 추가해주고..

언리얼 저장하기, 불러오기

SaveGame블루프린트를 생성한다 변수형이 인티저인 변수를 만들고 이름은 ClearStage로 한다 다음 SideScrollGameInstance로 넘어가 방금 생성한 SideScrollSaveGame의 변수 ClearStage를 불러올 수 있도록 SideScrollSaveGame 변수를 하나 생성한다 그리고 노드를 다음과 같이 연결한다 SideScrollSaveGame이 유효하지 않으면 하나 만들어주고 유효하다면 SideScrollSaveGame의 Clear Stage에 현재 게임(GameInstance)의 ClearStage를 넣는다 그리고 저장한 게임은 SideScroll이라는 이름의 slot에 저장한다 Load에서는 저장한 SideScroll 슬롯을 불러오고 해당 슬롯의 ClearStage를 G..