언리얼 엔진에서 Character class를 생성하게 되면 기본적으로 하나의 SkeletalMeshComponent가 멤버변수로 존재한다. 해당 SkeletalMeshComponent에 원하는 Mesh를 설정하면 캐릭터 형태를 볼 수 있다. 하지만 이렇게 설정하면 M
게임을 플레이하다보면 계단이나 경사면같은 지형을 사용하게 된다. 이러한 지형 위에 캐릭터가 위치할 때 캐릭터의 발이 부자연스럽게 위치하는것을 볼 수 있다. 발이 지형에 따라 자연스럽게 위치하도록 역방향 운동 역학(IK:Inverse Kinematics)을 적용해보자!발
많은 게임들이 3인칭 시점으로 진행 가능하지만 움직일 수 있는 범위는 x,y축으로 제한되는 부분이 아쉬웠다. 그래서 Climbing기능을 추가해 z축으로 이동할 수 있는 게임을 만들것이다. 이번 시간에는 간단하게 오를 수 있는 지형을 올라가는 기능을 만든다.난간을 감지
매달린 상태에서 다른 난간으로 이동하는 기능을 구현한다.캐릭터의 위치와 rotation을 기준으로 위, 아래 좌, 우, 4방향 대각선으로 Grid를 나눔입력에 따라 해당 그리드에 Trace를 생성해 해당위치에 있는 ledge를 탐색찾은 ledge중 가까운 위치를 찾음해
참고하고 있는 게임중 Assassin's Creed를 보면 입력방향에 따라 공격하는 객체를 선택할 수 있다. 입력벡터를 이용해 입력 방향벡터를 구함구한 방향벡터와 내적을 했을 때 75도 보다 작은 객체들을 구함해당 객체 중 가장 가까운 적에게 돌진하여 공격!youtub
Trace를 사용해서 플레이어를 감지할 수 있지만 사실적으로 감지하기 위해서는 Perception 즉, 감각을 이용하는 것이 효과적이다. 다양한 감각중 시각을 사용해서 플레이어를 감지해보자AIPerceptionComponent를 설정해당 컴포넌트의 최상위 감각을 시각으
strafe를 한국어로 뭐라 번역해야 될까? 게다리? 어찌됐든 게처럼 옆으로 움직이는 것이다. 움직이는 방향에 따라 Actor의 Rotation의 변화가 없는 것이 특징이다. 칼을 들고 싸울 땐 입력 방향에 따라 Actor가 회전하면 부자연스러우니 고정시키는 방법을 사
게임들을 보면 플레이어가 적에게 발각될 때 적들이 플레이어를 쫓아와 공격한다. 또한 공격하는 소리를 듣고 주변 적들이 쫓아오기도 한다. 이번 시간에는 시각정보만 사용하여 플레이어를 감지하고 공격하는 기능을 구현해보자.Sight Perception이 활성화 될 때 BB의
주로 콘솔 게임을 보면 적이 공격하는 타이밍에 맞춰 Parrying 키를 누르면 적의 공격을 쳐낸다. 해당 기능을 구현해보자. 적이 공격하는 타이밍에 Parrying이 가능하도록 설정사용자가 Parrying key를 눌렀을 때 주변에 Parrying 가능한 적이 있다면
게임들을 보면 적을 마지막으로 공격할 때 Finish Animation을 출력한다. 해당 기능은 전투를 다채롭게 만드는 역할을 한다. 기능을 구현해보자.공격 중 공격할 적의 체력이 일정 수치 이하로 내려갔다면 Finish Anim을 출력플레이어와 적이 Pair로 구성된
구현을 하다보니 Combat중 플레이어 캐릭터가 정면만 바라보고 있으니 어색한 부분이 있다. 플레이어 캐릭터가 주변 적을 바라보도록 설정해주자.Trace를 사용하여 반경내 적을 구함앞에서 구한 적들 중 플레이어 앞에 있는 적을 구함Character의 전방벡터와 내적하면
참고하고있는 Assassin's Creed를 보면 암살할 적을 보여주기위해 암살타겟 적에게 외곽선을 그려준다. 최근 게임에서는 자료를 찾기 힘들어 어크2를 가져왔는데 어크2에서는 전체 머티리얼의 외각 부분을 밝은색으로 설정해준것 같다. 아마 비용생각을 해서 이렇게 구현
프로젝트 이름에 들어가는 암살기능을 드디어 구현한다. 암살 시스템을 위해서는 AI의 감지 레벨이나 플레이어가 벽에 은신하는 기능등 다양한 기능이 필요하지만 일단 암살하는 애니메이션을 실행하는 기능을 구현해보자. 해당 기능은 이전에 Finisher를 구현할 때 구현해보았
이전에 전방의 적을 뒤에서 암살하는 기능을 구현했다. 하지만 적이 플레이어를 바라보고있을 수도 있고, 플레이어가 적보다 위에 있을 수도 있다. 타깃 위치와 회전에 따라 암살을 실행해보자.플레이어의 전방벡터와 타깃의 전방벡터를 내적내적 값이 0보다 크다면 플레이어를 보지
플레이어 캐릭터가 좌, 우로 움직일때 전방으로 움직이는 애니메이션이 출력되는데 rotation이 변경되니 어색한 부분이 있다. rotation이 변경되면 원심력에 휘어져 걷거나 달리는 애니메이션을 출력하자.그렇다면 언제 옆으로 살짝 누운 애니메이션을 실행해야 될까? 캐
참고로 하고있는 Assassin's Creed 시리즈를 보면 벽 뒤에 있는 적과 물건을 볼 수 있는 능력이 있다. 해당 스킬을 사용하면 범위 내 적들과 물건이 특정 색으로 보이고 스킬이 종료된 이후 몇초간 색은 지속된다. 해당 기능을 구현해보자.postprocess를
플레이어가 암살을 위해 벽에 밀착해서 이동할 수 있는 기능을 구현해보자.해당 기능과 관련된 내용은 모두 CoverMovementComponent에서 관리한다.c를 입력하면 전방에 벽이 있는지 확인하고, 벽이 있다면 벽위치로 이동하고 좌, 우로만 움직일 수 있게 한다.오
현재 개발한 내용을 보면 적들이 플레이어를 보자마자 칼을 착용하고 전투태세로 들어간다. 하지만 다른게임에서도 현실에서도 주변에 보이는 사람을 바로 공격하진 않는다. 보통 경계태세를 취하다 전투태세로 들어간다. 이번시간에는 경계태세를 보여주는 기능을 개발할것이다. AI의
보통 게임에서 전투를 시작하게 되면 긴박한 음악과 함께 전투모드로 들어가게된다. 이번 시간에는 전투모드를 구현해보겠다.전투모드를 판단하는 내용은 GameMode에 작성AI에게 플레이어가 감지되어 AI가 칼을 착용했다면 전투모드감지한 AI의 수를 저장AI가 감각을 잃거나
이전에 AI에 시각 감각을 추가해 플레이어를 볼 수 있었다. 이번 시간에는 플레이어가 있는 환경에 따라 AI가 볼 수 없게 만들어 볼것이다. 예시를 들자면 풀숲에 들어가면 은신을 할 수 있는 기능을 생각하면 된다.Movement State enum에 stealth를 추
이전에 Sight perception을 이용해 플레이어를 감지하였다. 이번시간에는 Hear perception을 사용해 소리를 들을 수 있도록 할 것이다. 이 청각은 인게임내 모든 소리를 들을 수 있는 것이 아니라 활소리나 발소리등 플레이를 위한 소리만 듣도록 설정한다
지금까지 만든 전투 시스템을 보면 칼과 단검(암살) 두 가지가 있다. 민들고있는 게임이 암살에 집중된 게임이니, 암살을 위한 무기를 추가하기로 했다. 참고하고 있는 Assassin's creed를 보면 포물선을 그리며 날아가는 투사체와 일자로 날아가는 투사체가 있다.
저번 시간에 만들었던 Projectile을 이어서 연막탄의 기능을 구현해보자연막 외부에서는 내부의 내용을 못봄연막 겉부분에 StaticMesh를 사용해 AI의 시야를 가려줌연막의 내부에서는 아무것도 못봄외부 내용은 StaticMesh에 Sight가 막히기 때문에 보지못
boss 만들어 보자구
이전 시간에 Boss의 근접공격을 구성했다. 좀 더 다채로운 게임을 위해 보스 주변에 폭발물을 생성하고 플레이어를 밀어내는 기술을 구현해보자melee 부분을 구현하다보니 boss ai가 공격시 움직이게 되는데 이때, 플레이어가 boss 바로앞에 위치하게 되면 colli