본문 바로가기

기타/패스트캠퍼스 Unity

(31)
유니티 입문 패스트캠퍼스 챌린지 21일차 HP 감소 처리하기 HP 감소 처리 작업하기 (1) - Actor 클래스 추가 - 플레이어와 적이 공통으로 상속할 클래스 - HP에 관한 변수들 - 총알 피해량 (Damage)에 관한 변수 public class Actor : MonoBehaviour { [SerializeField] protected int MaxHP = 100; [SerializeField] protected int CurrentHP; [SerializeField] protected int Damage = 1; // Start is called before the first frame update void Start() { Initialize(); } protected virtual void Initialize() { CurrentH..
유니티 입문 패스트캠퍼스 챌린지 20일차 적비행기 총알 발사와 충돌 감지 (1) Enemy Bullet 프리팹 만들기 - Bullet 프리팹 복제 후 이름 수정 - 총알 방향에 맞게 회전 후 위치 조정 - Layer 설정 수정 - 총알 Material 복제 후 색상 수정 - 복제된 Enemy Bullet에 복제된 Material 설정 이전시간에 만든 Bullet 프리팹을 Ctrl+D로 복제를 하고 EnemyBullet으로 이름을 변경한다. MeshRenderer의 BulletMat을 또 복제해서 EnemyBulletMaterial을 만든다. 적 총알의 색상은 좀더 붉은색으로 변경한다. 그리고 방향을 180도 돌려서 변경한다, 왜냐하면 적은 반대방향에서 등장하기 때문이다. 그리고 X좌표를 마이너스에서 플러스로 부호를 바꾼다. (꼭지점이 0,0,0..
유니티 입문 패스트캠퍼스 챌린지 19일차 총알이 명중했을 때 처리하기 Layer 추가하기 - Enemy - Player - EnemyBullet - PlayerBullet - Layer 간 충돌 설정하기 유니티 에디터에서 인스펙터상단에 Tags & Layer 탭이 있다. 여기서 레이어들을 추가한다. Enemy Player, EnemyBullet, PlayerBullet을 추가한다. Project Settings>Physics 설정화면으로 간다. 여기서 레이어끼리 충돌여부를 세팅하게된다. 예를들어 플레이어의 총알과 적의 총알은 서로 충돌이 안되도록 한다, 플레이어와 플레이어의 총알과도 충돌이 안되도록한다, 등... 쓸대없는 충돌처리는 여기서 막도록한다. 총알이 명중 했을 때 감지하기 - 총알 및 Player, Enemy 프리팹의 Layer 설정 ..
유니티 입문 패스트캠퍼스 챌린지 18일차 플레이어에 총알을 지정하고 발사하기 Player 클래스에 총알 변수 추가하기 - Player 프리팹에 총알 발사 위치 추가 - Player 클래스를 수정하여 발사 위치 및 총알 링크 - 총알 발사 속도를 조절하도록 변수 추가 Player 총알 Preafab을 발사하기 Player 클래스에 발사 메소드 작성 - Player 클래스에 발사 메소드 작성 - Instantiate로 복제 - GetComponent()로 Bullet 클래스 확보 - Bullet.Fire로 발사 지난시간에 만들었던 Bullet은 씬에서 삭제를 한다. (prefab으로 만들어 두었기때문에) Player.cs 스크립트를 편집한다. [SerializeField] Transform FireTransform; [SerializeField] ..
유니티 입문 패스트캠퍼스 챌린지 17일차 총알 게임 오브젝트 만들기 총알 모델을 만들기 -Sphere 모델을 변형(럭비공 모양)하여 작업 - 기본 콜리더를 제거한 후 Capsule Collider를 이용 - 별도로 Material 생성 - Mobile/Paticles/VertextLit Blended 쉐이더 사용 - Knob 텍스쳐 사용 게임 오브젝트>3D Object>Sphere 생성 위치는 0, 0, 0 크기는 0.35, 0.06, 0.06 정도로 조절해서 비행기의 크기에 비해 총알의 크기가 너무 크지않도록 변경 BulletModel로 오브젝트 이름을 변경하고 기본적으로 붙어있는 Sphere Collider는 우클릭해서 Remove Component로 제거한다. Capsule Collider를 추가한다. 기존에 있던 구체모양 충돌 인식을 알..
유니티 입문 패스트캠퍼스 챌린지 16일차 다음 강의를 이어서 볼려고하니 똑같은 강의가 또 올라와있었다. 알고보니 지난번 강의가 40분이 넘는 강의였는데 원래는 이걸 잘라서 올리려고 했었나보다. 잘게 쪼개서 여러 강의가 올라와있는데 지난시간에 갑자기 40분 분량을 줘서 매일 최소 한강의씩 진행해야하는 내 입장에서는 너무 당황했다. 총알 클래스 만들기 - 발사자 정보 - 발사 방향 - 총알 속도 - 이동 메소드 - 발사 메소드 오늘 진행 내용은 총알 클래스를 만드는 과정이다. 비교적 간단한 방식으로 구현되므로 코드를 통해 동작을 확인하자. using System.Collections; using System.Collections.Generic; using UnityEngine; public enum OwnerSide : int { Player = ..
유니티 입문 패스트캠퍼스 챌린지 15일차 플레이어와 충돌 감지하기 - PlayerCollider, EnemyCollider에 IsTrigger 체크 - Player와 Enemy 게임 오브젝트에 Rigidbody추가 후 Use Gravity 체크 해제 - Player와 Enemy에 OnTriggerEnter 추가 - Player와 Enemy에 OnCrash 메서드 추가 - OnTriggerEnter에서 OnCrash가 호출되도록 코드 작성 Collider는 직역하자면 충돌체라는 의미이다. 말 그대로 충돌을 인식하기 위해서 넣은것인데, 나중에 총알과 충돌을 인식하거나 해서 점수를 쌓을때 쓰는것이다. 콜리더 단독으로 충돌을 감지하는것이아니라 rigidbody가 있어야 충돌을 감지할 수 있어서 rigidbody 속성을 추가해야 한다. 그리고는 플레이어..
유니티 입문 패스트캠퍼스 챌린지 14일차 이번강의는 Enemy.cs의 코드를 완성하는 단계이다, 지난 시간에 인터페이스만 정의 해 두고 메서드의 몸체를 구현하지않은채로 두었기 때문에 코드를 작성하고 적 비행기의 동작을 확인하게 된다. 적 비행기 이동하기(1) - 이동 관련 메소드 내부 코드 작성 - 등장시 자연스러운 감속을 위해 Vector.SmoothDamp() 사용 - 퇴장시 자연스러운 가속을 위해 Mathf.Lerp() 사용 - 적 비행기를 화면 밖으로 배치 - 임시로 키보드 입력 감지 코드를 추가해서 등장/퇴장 테스트 UpdateMove() 메서드 내부에서는 Vector3에서 재공하는 SmoothDamp라는것을 사용해서 부드러운 움직임을 구현한다. 인자로 현재위치, 타겟위치, 걸리는 시간, 현재 속도, 최대 속도를 전달해야하는데 이것들을..
유니티 입문 패스트캠퍼스 챌린지 13일차 적 비행기 클래스 제작 - 적 상태 정의 (열거형): 사용 전/준비 완료/등장/전투 중/사망/퇴장 - 상태 변수 - 이동 계산에 사용할 상수 정의 - 이동 계산에 사용할 변수 정의 - 등장/퇴장에 사용할 메소드 추가 public class Enemy : MonoBehaviour { public enum State { None = -1, //사용전 Ready = 0, //준비완료 Appear, //등장 Battle, //전투중 Dead, //사망 Disappear, //퇴장 } [SerializeField] State CurrentState = State.None; const float MaxSpeed = 10.0f; const float MaxSpeedTime = 0.5f; [SerializeField]..
유니티 입문 패스트캠퍼스 챌린지 12일차 플레이어 이동하기 (1) - SystemManager에 Player 접근 경로 추가 - InputController에서 이동 방향을 계산하여 SystemManager를 통해 Player의 기능 호출 - 이동속도를 SerializedField 변수로 만들어서 조절 [SerializeField] Player player; public Player Hero { get { return player; } } SystemManager에 player를 추가하고 void UpdateInput() { Vector3 moveDirection = Vector3.zero; if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)) { moveDirection.y = 1; }..