본문 바로가기

유니티

6. 플레이어 피격 이벤트 구현 Layer 활용을 위해 새로운 타일맵 생성 - 타일맵은 각각 한개의 Layer만 적용가능하기때문 Platform 타일맵 Spikes 타일맵 Spikes 타일맵에 팔레트를 이용해 함정(가시) 배치 몬스터도 Enemy로 적용 게임에서 Enemy끼리는 보통 물리 충돌하지 않기때문에, 서로 물리 영향을 안받도록 설정합니다. Edit -> Project Settings -> Physics2D 하단 역피라미드 모형에서 조건에 맞춰 체크해제 이제 Enemy Layer끼리는 물리 충돌이 일어나지 않습니다. 다음으로 플레이어 피격 이벤트를 구현합니다. 보통 플레이어 피격 시 일정시간 무적이기 때문에 Layer를 "Player"과 "PlayerDamaged" 두개로 만듭니다. 또한 무적시간 동안 Enemy와 물리충돌이 일.. 더보기
5. 몬스터 AI 구현하기 결과 스크립트 생성 및 몬스터에게 주기 스크립트(EnemyMove) using System.Collections; using System.Collections.Generic; using UnityEngine; public class EnemyMove : MonoBehaviour { Rigidbody2D rigid; Animator anim; SpriteRenderer sprite; public int nextMove; //몬스터의 다음 이동 방향 결정 변수 void Awake() { rigid = GetComponent(); anim = GetComponent(); sprite = GetComponent(); Invoke("think", 3); //3초 뒤 think 함수 호출 예약 } void Fixe.. 더보기
4. TileMap으로 플랫폼 만들기 앞에서는 Floor 오브젝트를 하나하나 x축 옮겨가며 이어붙였지만, TileMap을 사용하면 그러지 않아도 됩니다. 앞에서 사용하던 Floor오브젝트는 다 지우고 Finish, Coin, Enemy 오브젝트는 disable상태로 두겠습니다. Tilemap 오브젝트 생성 2D Object -> Tilemap -> Rectangular Tilemap Palette 열기 상단 메뉴 Window -> 2D -> Sprite Editor 스프라이트 이미지를 Palette에 드래그 앤 드랍 저장 경로를 정하고 저장하면 팔레트에 뒤죽박죽으로 생성됩니다. 이를 정리합니다. Edit를 눌러 수정모드 S : 선택 M : 이동 Edit를 눌러 그리기 모드 B : Scene에 그리기 Scene에 그려줍니다. 타일맵에 콜라이더.. 더보기
4. 플레이어 점프 구현 & Raycast public float jumpPower; void Update() { //Jump if (Input.GetButtonDown("Jump")){ rigid.AddForce(Vector2.up * jumpPower, ForceMode2D.Impulse); } } 공기저항 때문에 낙하 속도가 조금 느립니다. 이를 빠르게 낙하하도록 조정해보겠습니다. 점프 낙하 속도 빠르게 조절 1. Project Setting -> Gravity y Default 값은 -9.81로 값이 커질 수록 중력이 세집니다. 2. Gravity Scale 중력을 몇배로 받을 것인지 값으로 정합니다. 점프 애니메이션 1. 애니메이션 Transition 연결 2. 애니메이션 변경 조건이 될 변수 생성(bool 타입) 3. Conditons.. 더보기
3. 2D에서 플레이어 이동 구현 2D는 Vector2, 2D컴포넌트를 사용. (3D는 Vector3 등) Rigidbody2D, Collider2D Physics2D 스크립트 상에서 2D 예 RigidBody2D rigid = GetComponent(); Vector2 vec = new Vector2(x, y); 플레이어 기본 이동 & 최고 속도 제한 로직 why? : Addforce를 계속 사용하면 플레이어의 이동 속도가 점점 빨라지므로 public float maxSpeed; void FixedUpdate() { //Move speed float h = Input.GetAxisRaw("Horizontal"); rigid.AddForce(Vector3.right * h, ForceMode2D.Impulse); //Max speed i.. 더보기
2. 아틀라스와 애니메이션 스프라이트 이미지 Inpector에서 Sprite Mode -> Multiple로 바꿔 스프라이트 이미지를 쪼개줍니다. Single과 Multiple과의 차이 Inspector에서 Sprite Editor를 클릭해 에디터(아틀라스라고 합니다)로 넘어옵니다. 아틀라스에서 스프라이트 이미지를 자를 수 있습니다. 왼쪽 부터 차례로 Automatic : 자동 Grid By Cell Size : 입력한 셀 사이즈 기준으로 자름 (이미지가 16x16이므로 셀 사이즈도 16x16으로 적어줍니다.) Grid By Cell Count : 입력한 셀 개수 기준으로 자름 우측 상단 TV이모티콘 버튼으로 색 반전이 가능합니다. 이제 이 분할한 스프라이트를 가지고 애니메이션을 넣어보겠습니다. 애니메이션은 이 이미지들의 연속된 .. 더보기
Scene에서 카메라 아이콘 크기 줄이는 법 Gizmos -> 3D Icons 스크롤바로 조정 더보기
1. 2D 프로젝트 생성 UnityHub에서 2D 선택 후 이름 입력하고 프로젝트 생성 2D 프로젝트는 Light 오브젝트를 기본적으로 생성하지 않습니다. 3D처럼 조명이 필요하지 않기 때문입니다. 마우스 우클릭 -> 2D Object -> Sprites로 스프라이트를 생성할 수 있습니다. 그럼 Scene에 다음과 같이 빈 사각형이 뜹니다. 2D에서 원근법을 보는 방법은 다음과 같습니다. 메인카메라에서 Projection을 Perspective로 설정 Orthographic : 원근법이 없는 정사영 투시 Perspective : 원근 투시 다른 스프라이트와 우선순위를 두는법 1. 스프라이트 오브젝트의 Z축 이용 2. 스프라이트 오브젝트의 Order in Layout 이용 Order in Layout : 빨강 : 2 검정 : 1 .. 더보기