VioletaBabel

43. 몹 패기 본문

BCA/6. Unity RPG 따라하기
43. 몹 패기
Beabletoet 2018. 6. 18. 14:51

무기를 쥐어주자.

오른 손에 무기를 넣어주자

CharWeapon.cs라는 파일을 만든다.

그리고 맘에 드는 프리팹을 Start()에서 만들어줄 것이다.

무기를 프리팹으로 넣어두고 instantiate한다.

각도나 그런건 잘 넣는다.


===


LeftControl을 눌렀을 때 휘두르게 해보자.


Invoke("함수명",시간); // 몇 초의 시간 후에 기재한 함수를 실행하는 함수.


이걸 이용함.


===


몹을 등장시킴


나무에 콜라이더를 트리거로 넣고 리지드바디를 키네틱으로 하였다.


Weapon.cs를 만들고 거기에 공격력 수치를 넣는다.


Mob.cs도 만들고 체력, 방어력 수치를 갖는다. 그리고 addDamage 함수를 통해 체력을 깎도록 하였다.


웨폰의 트리거엔터 함수에서 몹의 addDamage를 실행시킨다. 그러면 데미지를 입고 디스트로이 됨.


그리고 플레이어의 포지션과 자신의 포지션을 이용해 공격을 받으면 밀려나게 한다.


===

애니메이션이 정말 개같이 이상해서 위 충돌 방식을 폐기한다.

attack이란 함수를 charWeapon()에 넣고 그 함수에서


float rotY = transform.rotation.eulerAngles.y;

를 하고, 받아온 각도를 이용해 네 방향으로 if-else if를 이용해 검사한다.

검사 방식은 레이를 이용한다.

레이를 쏘아 정면에 있는지를 검사.

Ray에 오리진과 디렉션을 넣어 만든다.

그리고 RaycastAll로 RaycastHit의 배열을 만든 후, 그 배열을 foreach하여 부딪힌 오브젝트의 태그가 몬스터면 거리를 검사해 거리가 일정 범위 안이면 데미지를 준다.

다만, 그대로 쓰면 타격을 누르자마자 휘두르기 전에 몹이 데미지를 입으니 Invoke를 이용.


그리고 레이 하나만 쓰면 대각선 등은 커버가 안되니 Ray를 배열로 여러 개 쏜다. (박스캐스트를 써도 될 것 같다.)

'BCA > 6. Unity RPG 따라하기' 카테고리의 다른 글

46. 데이터 세이브 로드, HP바, EXP바  (0) 2018.06.21
45. 몬스터 공격, 해의 순환  (0) 2018.06.20
44. 몹 움직이기  (0) 2018.06.19
42. 시야 가리는 벽 반투명  (3) 2018.06.15
41. 시작화면, 설정  (0) 2018.06.14
Comments