일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 백엔드
- OAuth2.0
- spring
- oAuth
- 유니티
- 스프링부트
- JSON
- MongoDB
- RiotAPI
- 파이썬
- node.js
- c#
- 게임개발
- 스프링
- 코딩
- IntelliJ
- jwt
- netlify
- react
- 깃
- 백준
- express
- Python
- frontend
- springboot
- bcrypt
- AWS
- 게임
- unity
- 프로그래밍
- Today
- Total
Unwound Developer
유니티 - Vampire Survivors 같은 게임 제작해보기 본문
요즘 뱀파이어 서바이벌이란 게임이 유행이더라구요.
해보진 않았는데, 뭔가 유사하게 만들어봄직 해보여서 시도해보려구요.
근데 제가 원하는 에셋들이 없더라구요.
2D 픽셀 느낌의 그래픽으로 뱀파이어 서바이벌과 비슷한 느낌을 내보려 했는데, 찾는데 실패해서
그냥 아무거나 막 넣었습니다.
아직 완전 초기단계라서 그냥 허허벌판으로 대충 해놨습니다.
맵은 타일맵 형식으로 제작했는데, 유튜브 골드메탈이란 분 영상을 참고했습니다.
https://www.youtube.com/watch?v=JY-KFx3OsJo&list=PLO-mt5Iu5TeYfyXsi6kzHK8kfjPvadC5u
타일맵 만드는건 오래걸리지 않았습니다.
Player스크립트를 볼게요.
캐릭터 이동은 다른 때와 마찬가지로 간단하게 해놨습니다.
GetDamage 메소드는 피해를 입을 경우에 실행되는 메소드입니다.
Slider는 캐릭터의 HP바를 말하고, ChangeRed는 피격시 캐릭터가 빨갛게 깜빡거리는 효과를 말해요.
Slider는 캐릭터위에 Empty Object를 자식으로 배치해놓고 그 자리에 Slider를 배치했어요.
이렇게 배치해놓고 저 HeadUpPosition 오브젝트의 위치를 슬라이더가 따라가도록 하면
계속 캐릭터보다 +0.8 y좌표인 곳에 캐릭터 hp 슬라이더가 따라다녀요.
이게 캐릭터 피격 시에 깜빡거리게 하는 메소드입니다.
twinkleCount는 캐릭터가 세번까지만 깜빡거리게 하는 역할이에요.
피격 시 단순히 0.1초마다 색을 빨갛고 하얗게 바꾸는 메소드를 서로 호출하도록 했어요.
다음은 Enemy 스크립트를 볼게요.
Update에서 transform 포지션을 MoveTowards 메소드를 통해 traget 포지션으로 이동시켜요.
즉, moveSpeed의 속도로 플레이어 오브젝트까지 계속해서 이동하게 하는거에요.
그럼, Enemy가 플레이어를 추적합니다.
localScale은 Enemy 오브젝트가 플레이어쪽을 쳐다보도록 조정했어요.
뒤돌아서 쫓아가는건 부자연스럽더라구요.
몬스터도 데미지를 입고 사망해야 하기때문에, GetDamage 메소드가 있습니다.
hudText는 데미지를 입었을 때, 데미지가 표기되었다 사라지는 그거에요.
흔히 게임에서 나오는 데미지 표기.
데미지 표기가 점점 사라지는건 따로 데미지 스크립트가 있습니다.
아래에 addForce부분은 데미지 입었을 때, 넉백을 구현한거에요.
Update에서 계속 vector를 zero로 만들어서 쭉 밀려나지 않고 잠깐만 뒤로 물러납니다.
플레이어와 닿았을 때, 플레이어의 GetDamage메소드를 실행해요.
데미지 텍스트의 스크립트를 볼게요.
Translate 메소드를 이용해서 y축으로 moveSpeed의 속도로 움직이게 하고,
alpha.a 의 값을 Lerp라는 메소드를 이용해서 점점 투명하게 해요.
alpha.a는 텍스트의 투명도를 나타내고, Lerp는 한 값에서 다른 값까지 주어진 속도로 바꿔요.
그리고 1초뒤에 Destroy 하게 됩니다.
캐릭터가 Enemy를 공격하는건 다음과 같이 구현했습니다.
캐릭터의 앞뒤에 BaseAttack이라는 오브젝트를 만들어주고 BoxCollider를 설정했어요.
IsTrigger를 체크해 물리적 작용을 없애고, 닿았는지만 체크해요.
뱀파이어 서바이벌처럼 1초정도에 한번씩 자동공격하도록 했어요.
1초에 한번씩 콜라이더를 켰다가 끄면서 뱀파이어 서바이벌과 비슷한 느낌을 냈어요.
그런데, 공격에 마땅한 애니메이션이 없어서 지금은 그냥 투명하게 공격이 이루어집니다.
이런식입니다.
아직 더 구현해야 할게 많아요...
'Unity > Unity, C#' 카테고리의 다른 글
Vampire Survivors 따라해보기 - 확률형 등장 (0) | 2022.02.15 |
---|---|
유니티 - 슈퍼마리오의 기본적인 기능들 (0) | 2022.02.04 |
유니티 - 파티클 효과 (Unity Particle) (1) | 2022.02.01 |
유니티 - 슈퍼마리오, 플레이어 컨트롤 (0) | 2022.01.28 |
유니티 - 슈퍼마리오 카메라 (0) | 2022.01.28 |