본문 바로가기

Hello, World!/Unity47

유니티 3D 좀비 서바이벌 게임 만들자 (11) 지난 시간에 스크립터블 오브젝트 설명 enum 은 const 상수를 기반으로 나옴 Gun.cs 작성 ... private void Awake() { // 사용할 컴포넌트의 참조 가져오기 bulletLineRenderer = GetComponent(); gunAudioPlayer = GetComponent(); // 사용할 점을 두 개로 변경 bulletLineRenderer.positionCount = 2; // 라인 렌더러를 비활성화 bulletLineRenderer.enabled = false; } ... bulletLineRenderer.positionCount 부분은 여기! enabled는 컴포넌트 껐다켰다 하는 거고, 다 합쳐서 껐다키고 싶으면 SetActive! ... private void .. 2022. 4. 18.
유니티 3D 좀비 서바이벌 게임 만들자 (10) Scriptable Object : 유니티 프로젝트의 에셋 형태로 데이터를 담을 수 있는 타입 GunData.cs 생성 using UnityEngine; [CreateAssetMenu(menuName = "Scriptable/GunData", fileName = "GunData")] public class GunData : ScriptableObject { public AudioClip shotClip; // 발사 소리 public AudioClip reloadClip; // 재장전 소리 public float damage = 25; // 공격력 public int startAmmoRemain = 100; // 처음에 주어진 전체 탄알 public int magCapacity = 25; // 탄창 용량 .. 2022. 4. 15.
유니티 3D 좀비 서바이벌 게임 만들자 (9) IDamageable.cs 생성 공격당할 수 있는 모든 대상은 IDamageable 인터페이스를 상속하도록 할거임 using UnityEngine; public interface IDamageable { void OnDamage(float damage, Vector3 hitPoint, Vector3 hitNormal); } damage : 데미지 크기 hitPoint : 공격당한 위치 hitNormal : 공격당한 표면의 방향 Player Character에 빈 오브젝트 생성 이름은 Gun Pivot 포지션 확인 Line Renderer : 주어진 점들을 이은 선을 그리는 컴포넌트 총을 쏠 때 탄알의 궤적을 그릴 거임! Line Renderer 오디오 소스 추가하고 play on awake 체크 해제 효.. 2022. 4. 14.
유니티 3D 좀비 서바이벌 게임 만들자 (8) 시네머신에서 제공하는 카메라 브레인 카메라(Brain Camera) : 게임 월드를 촬영하는 진짜 카메라! 씬에 하나만 존재 가상 카메라(Virtual Camera) : 브레인 카메라의 분신 역할을 하며 씬에 여러 개 존재할 수 있음 Main Camera에 CinemachineBrain 컴포넌트 추가 Create Virtual Camera 이름은 Follow Cam Follow, Look At 부분이 있다 Player Character 할당 Lens 의 Field of view를 20으로 변경해줌! 확대됐다! 얘는 시야각이다. 시야각을 줄여 게임 화면을 줌인한 것! 시야각은 카메라가 헌 번에 볼 수 있는 각도임 시야각을 넓히면 넓은 영역을 보게 되므로 줌아웃 효과가 나타난다 레이캐스트 파티클 시스템 인터.. 2022. 4. 13.
유니티 3D 좀비 서바이벌 게임 만들자 (7) + 이벤트 함수 순서 유니티 이벤트 함수 순서 (링크) PlayerMovement.cs // FixedUpdate는 물리 갱신 주기에 맞춰 실행됨 private void FixedUpdate() { // 물리 갱신 주기마다 움직임, 회전, 애니메이션 처리 실행 // 회전 실행 Rotate(); // 움직임 실행 Move(); // 입력값에 따라 애니메이터의 Move 파라미터값 변경 PlayerAnimator.SetFloat("Move", playerInput.move); } // 입력값에 따라 캐릭터를 앞뒤로 움직임 private void Move() { // 상대적으로 이동할 거리 계산 Vector3 moveDistance = playerInput.move * transform.forward * moveSpeed * Tim.. 2022. 4. 12.
유니티 3D 좀비 서바이벌 게임 만들자 (6) 자동 구현 프로퍼티! 프로퍼티는 데이터의 오염에 대해선 메소드처럼 안전하고, 데이터를 다룰 때는 필드처럼 간결하다. class MyClass { private int myField; public int MyField { get { return myField; } set { myField = value; } } } class MyClass { public int myField { get; set; } } class MyClass { public int myField { get; private set; } } Input.GetAxis() : 입력으로 감지할 축 이름을 받아 감지된 입력을 숫자로 반환 Input.GetButton() : 입력으로 감지할 버튼 이름을 받아 해당 버튼을 누르고 있는 동안에는 tru.. 2022. 4. 11.
유니티 3D 좀비 서바이벌 게임 만들자 (5) Avatar Mask Upper Body Mask 할당해주기 Inspector - Humanoid를 손대보면 바뀐다! Inverse Kinematics 역운동학 체크 되어 있어야 함! PlayerInput.cs PlayerMovement.cs 생성 PlayerInput.cs 작성 using System.Collections; using System.Collections.Generic; using UnityEngine; // 플레이어 캐릭터를 조작하기 위한 사용자 입력을 감지 // 감지된 입력값을 다른 컴포넌트가 사용할 수 있도록 제공 public class PlayerInput : MonoBehaviour { public string MoveAxisName = "Vertical"; // 앞뒤 움직임을 위.. 2022. 4. 8.
유니티 3D 좀비 서바이벌 게임 만들자 (4) Player이름 바꾸고, 태그 추가 리지드바디 추가 Angular Drag : 각 항력! 회전에 대한 마찰력임 캡슐 콜라이더 추가해준다 Audio Source 추가하고 Play On Awake 체크 해제! Apply Root Motion 체크해제함으로써 애니메이션에서 오브젝트의 위치와 회전을 하는 걸 막음 스크립트로 모션을 제어하기 위함임~ 애니메이터 레이어 Layers를 보자 Blend Tree Movement Tree 2022. 4. 7.
유니티 3D 좀비 서바이벌 게임 만들자 (3) Realtime Global Illumination 체크! Realtime Environment 체크! Lightmapping Settings 라이트닝의 해상도, 빛의 질감 등을 잡아주는 곳 Direct Samples 가 기본 32로 돼있는데 이게 높은 것. 우리는 16으로 해줌 Indirect Samples ... 다 높다 Indirect Resolution : 해상도라고 보면 됨 우리가 지금 불러온 건 로우폴리이기 때문에 낮춘 것 원래 있던 수치가 기본임! 이제 Generating Lightning을 눌러주자 우리가 꾸운 파일이 여기에 있다 Model을 불러와보자 Configure를 누르면 뼈대가 보인다 유니티 에셋스토어 말고도 모델을 가져올 수 있는 사이트 https://www.mixamo.com/.. 2022. 4. 7.