ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 15장 좀비 서바이버 : 총과 슈터
    Unity/레트로의 유니티 게임 프로그래밍 에센스 2021. 2. 13. 01:47

    15.1 인터페이스

        15.1.1 C# 인터페이스

            - 인터페이스를 상속하는 클래스는 해당 인터페이스의 메서드를 public으로 반드시 구현해야함.

            - 인터페이스의 메서드는 선언만 존재하고 구현이 없음. 형태만 결정(선언만 함).

        15.1.2 느슨한 커플링 (loose coupling)

            - 어떤 코드가 특정 클래스의 구현에 결합되지 않아 유연하게 변경 가능한 상태.

            - 인터페이스처럼 특정 메서드의 행위는 신경쓰지 않고, 해당 메서드가 구현되어 있어서 사용할 수 있는지만 신경씀.

        15.1.3 IDamageable

            - 공격 당할 수 있는 모든 대상이 상속하도록...

     

    15.2 총 게임 오브젝트 준비

        15.2.1 Gun 게임 오브젝트 준비하기

            - 탄알 궤적. Add Component > Effects > Line Renderer

            - 총 쏘는 순간에만 라인을 그릴 것이므로 컴포넌트 비활성화

                > Cast Shadows : 탄알 궤적이 그림자를 생성.

                > Receive Shadows : 탄알 궤적 위에 그림자가 그려지는 것.

                > Materials - Size : 라인 렌더러가 그리는 선의 최대 개수?. 

                > Positions - Size : 라인 렌더러가 이을 점의 개수?.

        15.2.2 파티클 효과 추가하기

            - 유니티에서 연기, 화염재 등의 시작 효과는 파티클 시스템 컴포넌트를 사용.

            - 파티클 시스템은 기본적으로 여러 작은 스프라이트 이미지를 랜덤하게 휘날리는 방식으로 동작.

     

    15.3 Gun 스크립트

        15.3.1 Gun의 메서드

        15.3.2 Gun의 필드

        15.3.3 Awake() 메서드

        15.3.4 OnEnable() 메서드

        15.3.5 코루틴

            - 번쩍이는 탄알 궤적을 구현하려면 라인 렌더러를 켜서 선을 그린 다음, 라인 렌더러를 다시 켜야함. 이때 매우 짧은 시간 동안 처리를 일시 정지함. 대기 시간이 필요 -> 코루틴 사용

            - 유니티의 코루틴 메서드는 대기 시간을 가질 수 있는 메서드. 코루틴 메서드는 IEnumerator 타입을 반환해야하며, 처리가 일시 대기할 곳에 yield 키워드를 명시해야함.

            - 코루틴 동작 원리

                > 코루틴이 처리를 쉬는 동안에는 프로그램의 다른 코드가 실행될 수 있음. 대기 시간이 끝나면 프로그램의 처리가 코루틴의 마지막 실행줄로 되돌아감. 남은 처리를 이어서 진행.

                > 초 단위로 쉬기 : yield return new WaitForSeconds(시간);

                > 한 프레임만 쉬기 : yield return null;

        15.3.6 ShotEffect() 메서드

            - AudioSource.PlayOneShot(audioclip) : 이미 재생 중인 오디오를 정지하지 않고 중첩시킴. (총알 연사에 적합)

        15.3.7 Fire() 메서드

        15.3.8 레이캐스트 (Raycast)

            - 보이지 않는 광선을 쐈을 때 광선이 다른 콜라이더와 충돌하는지 검사하는 처리. 충돌하면 RaycastHit 타입으로 충돌 정보가 생성.

        15.3.9 Shot() 메서드

        15.3.10 Reload() 메서드

        15.3.11 ReloadRoutine() 코루틴

        15.3.12 완성된 Gun 스크립트

        15.3.13 Gun 컴포넌트 설정

     

    15.4 슈터 만들기

        15.4.1 IK

            - 캐릭터 애니매이션은 기본적으로 FK (Forward Kinematics)로 동작.

            - FK에서는 부모 조인트에서 자식 조인트 순서로 움직임을 적용함. 부모 조인트가 움직이면 자식 조인트도 함께 움직임.

            - FK는 큰 단위의 관절에서 세부적인 관절 순서로 움직임을 적용.

            - 물건이 움직이면 FK는 어깨를 다시 조정하고 팔을 조정하고 손을 조정함. 즉, 원하는 손 위치가 있다면, 해결 불가.

            - IK는 하위에서 상위 순서로 조인트를 결정함. 손 - 팔 - 어깨 순서로 조정.

        15.4.2 PlayerShooter 스크립트

        15.4.3 Start() 메서드

        15.4.4 OnEnable(), OnDisable() 메서드

        15.4.5 Update() 메서드

        15.4.6 UpdateUI() 메서드

        15.4.7 OnAnimatorIK() 메서드

            - IK 가중치의 범위는 0~1. 해당 부위의 원래 위치와 IK에 의한 목표 위치 사이에서 실제로 적용할 중간값을 결정.

        15.4.8 완성된 PlayerShooter 스크립트

        15.4.9 PlayerShooter 컴포넌트 설정하기

    15.5 마치며

     

     

     

     

     

    댓글

Designed by Tistory.