호우동의 개발일지

Today :

article thumbnail
[Unity 3D] GUI 4가지 생성 방식과 방식 간의 차이 정리

스크립트 기본 준비 기본적으로 GUI를 사용하기 위해서는 2가지 사전 준비가 필요하다. 1. 스크립트에 UnityEditor를 사용함을 명시한다. 2. 해당 클래스의 부모를 EditWindow로 지정한다. using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; // UnityEditor 사용 public class TestEditorWindow : EditorWindow // EditorWindow를 부모로 지정 { } 유니티 Scene에 새로운 스크립트 TestEditorWindow를 만들어 위와 같이 수정한다. 새로운 윈도우 만들기 GUI를 만드려면 그 GUI를 그리기 위한 도화지(..

article thumbnail
[Unity 3D] #8 SphereCastAll을 이용한 타격포인트 표시 및 낙뢰 구현 - Avoid Chess

이 글은 포스팅 #6과 포스팅 #7과 연결된 마지막 포스팅이다. 광폭화패턴에서 플레이어를 실질적으로 공격하는 액션이다. 구현 목표 일정 시간마다 플레이어가 있는 곳에 낙뢰를 떨어뜨린다. 낙뢰를 떨어뜨리기 전에 그 포인트에 낙뢰의 범위만큼 빨간색으로 경고를 준다. 그리고 1초 후 그 포인트에 번개를 떨어뜨린다. 이러한 액션을 보스가 죽을 때까지 반복한다. 구현 과정 1. 낙뢰 이펙트 세팅 스크립트 작업에 들어가기 앞서 낙뢰처럼 보이기 위한 적절한 이펙트를 찾고 파티클 시스템을 설정해야 한다. 해당 파티클이 적당해 보인다. 근데 너무 재생시간이 짧아서 좀 더 길게 늘여줬다. Duration과 StartLifeTime을 2배로 늘려주면 재생시간만 두배로 늘어나게 된다. 핵심적으로 Particle System에..

article thumbnail
[Unity 3D] #7 Directional Light 컴포넌트를 활용한 화면 구현 - Avoid Chess

이번에 할 구현은 저번 #6에 이은 동작에 관한 구현이다. #6 포스팅은 간단하게 빨간 볼을 크게 키운 뒤 위로 쏘는 액션을 구현한 것이다. 자세한 것은 밑의 링크를 참고하길 바란다. https://howudong.tistory.com/109 [Unity 3D] #6 애니메이션 상태 체크를 활용한 보스 스킬 구현 - Avoid Chess 스크립트 상에서 현재 애니메이션 상태를 받아오는 방법으로 가장 대표적인 것은 Animator 컴포넌트의 GetCurrentAnimatorStateInfo를 이용하는 방법이다. 여기서 가장 많이 보편적으로 사용하는 함수를 howudong.tistory.com 구현 목표 #6 포스팅에서 만들어뒀던 빨간 볼이 하늘로 올라간다. 그리고 하늘 전체가 먹구름으로 가득 차듯이 날씨가..

article thumbnail
[Unity 3D] #6 애니메이션 상태 체크를 활용한 보스 스킬 구현 - Avoid Chess

스크립트 상에서 현재 애니메이션 상태를 받아오는 방법으로 가장 대표적인 것은 Animator 컴포넌트의 GetCurrentAnimatorStateInfo를 이용하는 방법이다. 여기서 가장 많이 보편적으로 사용하는 함수를 설명하겠다. 해당 함수를 이용해서 아래 구현 목표에 해당되는 보스 스킬을 구현해 보겠다. 구현 목표 음.. 이상하게 보이긴 하지만 보스가 스프링처럼 몸을 움츠리는 애니메이션을 하고 그 사이에 빨간 구는 점점 커진다. 그리고 보스가 한 번에 튀어 오르면서 커진 빨간 구가 위로 발사되는 보스 패턴을 만들 것이다. 여기서 빨간 구가 커지는 타이밍과 보스 애니메이션이 연관됐고, 위로 발사되는 타이밍도 보스 애니메이션이 튀어 오르는 타이밍에 발사되어야 하기 때문에 스크립트상에서 이 타이밍을 맞춰줘..

article thumbnail
[Unity 3D] #5 오브젝트 중심 원형 배치 및 회피성 타겟 추적 시스템 구현 - Avoid Chess

구현 목표 원형으로 보스 위에 몇 개의 매직볼이 생긴다. 이 매직 볼은 두 가지 종류가 있는데 파란색과 빨간색이다. 파란색 -> 느리지만 플레이어를 추적 빨간색 -> 빠르지만 플레이어 방향으로 일직선 공격 이를 구현해 보자 구현 과정 1. Magic Ball 오브젝트 설정 2가지 MagicBall에 어울릴만한 오브젝트를 선별했다. 일단 크기를 조절하기 위해서 Scene에서 크기를 확인해 봤다. 너무 크다. 그래서 Scale을 줄이고자 한다. 그런데 Scale을 아무리 건드려도 줄어들지 않을 것이다. 왜냐하면 해당 오브젝트는 파티클 시스템이기 때문에 다른 설정을 해줘야 한다. 이펙트에 파티클 시스템 컴포넌트를 보면 안에 Scaling Mode가 있다. 여기서 Hierarchy로 바꿔주고 스케일을 다시 조정..

article thumbnail
[Unity 3D] #4 텔레포트 구현 및 애니메이팅 - Avoid Chess Project

구현 목표 비숍 보스에 텔레포트 패턴을 추가하려고 한다. 텔레포트 패턴은 뿅 하고 사라진 후 플레이어의 머리 위에서 나타나는 패턴이다. 구현을 2가지 항목으로 세분화하였다. 1. 텔레포트 액션 애니메이팅 보스의 텔레포트 애니메이션을 제작하고, 이펙트를 추가하여 이동할 때 텔레포트 하는 느낌이 나도록 할 것이다. 2. 텔레포트 스크립트 구현 만든 애니메이션을 토대로 코드를 작성하여 실제로 보스에게 패턴을 적용시킨다. 구현 과정 1. 텔레포트 애니메이션 만들기 우선 Bishop 프리팹을 이동해서 Create New Clip으로 Bishop_Teleport라는 이름으로 새로운 애니메이션을 만들어준다. 간단하게 스케일 조정으로 텔레포트 효과를 만들었다. Animation에서 녹화버튼을 누르고 원하는 시간대에 모..

article thumbnail
[Unity 3D] #3 코루틴을 활용한 작아지는 효과 구현 - Avoid Chess

학교 과제랑 스터디, 알바 등 여러 가지에 치려 다니느라 게임 프로젝트가 우선순위에서 밀리다 보니 일주일정도 손을 못 댔다. 오랜만에 살짝 여유시간이 생겨서 프로젝트를 할 수 있게 됐다. 곧 있으면 중간고사라 지금이라도 짬짬이 하지 않으면 진짜 못할 거 같아서 조금이라도 하려고 한다. 구현 목표 구현하려는 것은 간단하다. 게임에서 흔히 말하는 보스 체력이 떨어지면 나오는 발악 패턴, 즉 광폭화이다. 보스가 일정 체력 이하로 떨어지면 보스 크기가 점점 줄어드는 효과를 주고, 패턴이 나오는 속도가 올라가도록 구현할 것이다. 구현 과정 1. 애니메이션 생성 및 구현 광폭화 이후, 그러니까 사이즈가 작아지고 난 후에 쓸 애니메이션이 따로 필요하다. 왜냐하면 사이즈를 줄이는 것은 Scale을 줄이는 것인데, 애니..

article thumbnail
[Unity 3D] #2 파티클 시스템을 활용한 방사형 보스 패턴 구현 - Avoid Chess

구현 목표 보스 패턴 중 부채꼴로 불을 뿜는 보스 패턴을 만들려고 한다. 플레이어의 위치를 인식하고, 일정 시간 동안 부채꼴로 불꽃을 방사한다. 불꽃에 닿은 플레이어는 대미지를 입는다. 목표를 확실히 하기 위해 그림으로 나타내겠다. 위 그림과 같이 불꽃을 부채꼴로 쏜다. 구체적으로 구현해야 하는 것을 생각해 보면 1. 플레이어를 인식 2. 플레이어 방향으로 보스 회전 3. 파티클 활성화하여 충돌 시스템을 이용하여 플레이어에게 대미지 4. 일정 시간 이후 파티클 종료 기존에 있던 파티클 에셋을 약간 변형하는 과정 덕에 파티클 시스템을 조금 공부하는데 도움이 됐다. 구현 과정 1. 파티클 왼쪽의 이펙트가 내가 사용한 이펙트인데, 최대한 불을 발사하는 것과 최대한 비슷한 것을 이용했다. 그리고 위에 있는 수치..