Unity/하스스톤 유니티Clone By 고라니 TV 15

하스스톤 유니티Clone - #4 공격과 마무리 (3) End...

셰이더 (Shader) GPU에서 실행되는 프로그램. 화면의 픽셀 컬러를 결정하는 계산을 수행. 하스스톤에서 게임이 끝나면 화면이 회색으로 변하는데, 이를 표현하기 위해 이용. 메뉴얼 보고있는데 잘 모르겠... rgb값을 변경해서 Material에서 이용하는 듯 1. 공격 로직 만들기 otherEntities의 attackable이 true인 Entity들을 새 리스트에 작성. 새 리스트를 램덤하게 섞어주고, 새 리스트 내 Entity들이 myEntities내 Entity들을 랜덤하게 공격한다. (보스도 포함) 보스가 죽으면 (TurnManager.Inst.isLoading == true) 더이상 실행되지 않음. 해당 과정은 코루틴으로 실행됨. 3줄 요약 공격 로직도 AI를 이용하는 것이 아니니 별거 없..

하스스톤 유니티Clone - #4 공격과 마무리 (2)

1. 죽음 처리 공격과 데미지 처리가 끝난 후 죽음 처리. AttackCallback(attacker, defender) 메서드 호출 attacker의 Order를 초기화 (이전 공격시 Order를 높임) attacker와 defender의 isDie가 true이면 Entity가 죽음처리에 들어감. 죽음 처리는 Entity의 isMine 속성에 따라 myEntities || otherEntities 에서 해당 Entity를 제거. DOTween으로 흔들리는 효과와 스케일을 줄여 객체가 없어진 것 처럼 보기에 만듬. 스케일을 줄인 후 필드의 엔티티들을 정렬하고, 해당 Entity GameObject를 제거. void AttackCallback(params Entity[] entities) { // 죽을 사..

하스스톤 유니티Clone - #4 공격과 마무리

1. 엔티티 마우스 입력 EntityMouseDown(Entity) : 필드에 소환된 엔티티를 마우스로 클릭 했을 때 클릭한 엔티티를 selectEntity로 지정. EntityMouseUp : selectEntity이고 상대 엔티티에서 마우스를 떼면 공격 메서드(Attack) 호출 EntityMouseDrag : 상대 필드에 소환된 엔티티들 중 타겟이 될 엔티티를 targetPickEntity로 지정. 2. 타겟 표시 하스스톤과 달리 EntityMouseDrag에서 상대 타겟을 설정할 때 상대 엔티티에 Target 마커를 추가. MyPlayer에 스프라이트를 추가하고 이름은 TargetPicker로 지정. 이 스프라이트는 항상 맨 앞에 나와있어야 하므로, Order in Layer를 최대한 높여줌(10..

하스스톤 유니티Clone - #3 엔티티 스폰 (3)

Particle System (파티클 시스템) 씬 안에 다수의 작은 2D 이미지를 생성하고 애니메이션하여 유체 엔티티를 시뮬레이션. 움직이는 애니메이션을 만든다고 생각하면 될듯. 사용한 파티클 시스템 속성 Duration : 시스템이 실행되는 지속 시간. Looping : 활성화 하면 시스템이 지속 시간의 끝에 다다르면 다시 시작되어 주기를 계속 반복. Start Delay : 시스템이 활성화된 후 방출을 시작하기까지 기다리는 지연 시간(초). 0초면 바로 시작. Start Lifetime : 파티클의 초기 수명. Gravity Modifier : Physics 창에서 설정된 중력 값을 스케일. 0이면 중력 효과가 해제. Max Particles : 시스템에 한번에 포함될 수 있는 최대 파티클 수. 한도..

하스스톤 유니티Clone - #3 엔티티 스폰 (2)

Inspector의 Normal Vs Debug Normal : 커스텀 에디터가 표시. Debug : 커스텀 에디터 대신 프로퍼티만 표시. 스크립트의 경우 private 변수도 표시 Object를 만들고 설정할 때는 웬만하면 Normal일 때 하도록. 강의에 나오는 메뉴가 Debug일 때는 나타나지 않음 1. 턴 시작 이벤트 추가 TurnManager.cs에 OnTurnStarted Action을 추가. 카드를 분배하고 나면 Action을 Invoke OnTurnStarted는 내 턴이면 myPutCount를 0으로 변경. 내 턴이 시작되면 myPutCount를 0으로 변경해서, 카드를 필드에 놓을 수 있게 함. 2. 턴 종료 버튼 만들기 UI - Button Object를 만들고, Sprite를 추가한..

하스스톤 유니티Clone - #3 엔티티 스폰 (1)

Destroy VS DestroyImmediate 둘다 객체를 파괴하는 기능은 동일. Destroy : Update 프레임이 끝나야 파괴가 됨. 파괴된 객체를 다시 불러도 Update 프레임 내에서라면 null객체가 아님. DestroyImmediate : 메서드가 호출된 즉시 객체가 파괴되고, 다시 부르면 null객체가 되기 때문에 Null참조예외가 발생함. 1. Entity(엔티티) 카드가 필드에 놓여지면 해당 카드는 엔티티로 스폰. 엔티티도 카드와 똑같이 프리팹 게임 오브젝트. 마우스가 인식할 수 있도록 Box Collider2D Component를 추가. 카드와 유사하게 캐릭터, 공격력, 체력, Item을 지정. 해당 엔티티의 종류를 확인하는 bool 변수 (isMine, isBossOrEmpty..

하스스톤 유니티Clone - #2 카드 드래그 (2)

콜라이더 (Collider) 물리 충돌 처리를 위한 오브젝트의 형태 하스스톤 유니티 Clone에서는 Polygon Collider 2D를 사용. 형태를 원하는 수준의 디테일로 다듬을 수 있음. 단, 기본 타입(Box, Circle 등)에 비해 훨씬 프로세스에 부하를 주니 주의. Raycast Physics.Raycast : 직선에 씬을 투영하여 대상에 적중되면 true를 리턴하는 물리 메서드. 대상과의 충돌과 관련된 자세한 정보 (진선과 객체의 교차 정보, 거리, 위치, 객체의 Transform에 대한 참조 등)를 리턴 RaycastAll : RaycastHit 구조체 배열을 이용해 여러 개체에 대한 충돌 정보들을 반환. 결과 값은 순서가 뒤섞임. 1. 마우스를 카드에 갖다 대면 카드 확대 Card Pr..

하스스톤 유니티Clone - #2 카드 드래그 (1)

[Header("이름")] : 이름과 관련있는 필드들을 그룹화. Inspector에서 확인 가능. Action (Using System 필요) C#에서 미리 만들어져 제공하는 반환값이 없는 메서드의 등록을 위한 델리게이트 Action을 이용하면 등록된 메서드를 대리로 호출하며, 기존 메서드를 직접 호출하는 것 처럼 호출 가능. 메서드를 등록하기 위해서는 +=을 이용하고, 제거하려면 -=을 이용. 콜백 메서드를 구현할 때 효과적. 메서드를 캡슐화하여 사용하여 객체 지향적이고 보안이 유지 코루틴(Coroutine) Update 매소드는 매 프레임 마다 호출(60fps면 1초에 60번 호출) 시간을 지연 시켜야 하는 상황이 있다면, 지연 시켜야 하는 시간 * 60번 만큼 Update 메서드가 호출되어야함. 하..