본문 바로가기

Unity

(160)
Unity2D - 몬스터공격 , 게임매니저 생성 및 점수획득 1.몬스터 공격(Player 스크립트) *다른 게임오브젝트에 있는 스크립트를 가져오는 방법이 Point 2.몬스터 공격(Monster 스크립트) 3.아이템먹기 (1) - item에 써클콜라이더2D를 추가하고 is trigger를 체크한 후 (2) - 스크립트 작성 4.게임메니저 생성 및 점수계산하기 4-1 : 게임메니저오브젝트를 생성하고 플레이어스크립트와 연동시키기 (1) - EmptyObject를 생성하고 GameManiger로 rename (2) - GameManigerScript 스크립트를 생성하고 GameManiger 오브젝트에 드래그 앤 드랍 (3) - PlayerMove 스크립트 안에서 public GameManigerScript로 gameManiger라는 변수를 선언하고 - 유니티엔진에 퍼블..
Unity2D - 장애물구현 1.몬스터와 장애물간 충돌 무시 (1) - 가시장애물에 Polygon Collider를 주고 Layer를 anemy로 설정 - monster오브젝트의 Layer도 anemy로 설정 (2) - Edit -> project settings 에서 Layer collision Matrix 의 anemy/anemy 체크해제 (Layer가 anemy인 오브젝트끼리는 충돌을 무시한다) 2.몬스터와 장애물에 플레이어가 충돌했을때 (1) - 몬스터와 장애물의 tag를 모두 anemy로 설정 (2) - Player가 tag가 anemy인 오브젝트와 충돌했을때 이벤트 함수를 player script에 작성 (넉백, Player 색 투명하게) (3) - player가 넉백 상태일때 무적상태로 만들어 anemy와 충돌무시 구현..
Unity2D - 몬스터 AI 1.몬스터에 x축벡터를 랜덤하게 부여하여 속력으로 주기 (1). Think 함수 선언 - Random.Range(-1.2)로 랜덤한 값을 추출하여 random변수에 초기화하고 - Invoke("Think",3) :자기 자신의 함수를 3초마다 실행하도록 자기자신 함수안에 작성(재귀함수) * - Ramdom.Range(int min , int max ) : 최솟값(min) ~ 최댓값 (max-1) 사이의 랜덤한 정수값 - Ramdom.Range(float min ,float max ) : 최솟값(min) ~ 최댓값 (max) 사이의 랜덤한 실수값 - Invoke("함수이름", x초) : x초마다 "함수이름"의 함수를 호출하도록하는 함수 (2) - 추출한 랜덤한 random 정수값을 해당 오브젝트(몬스터)의 ..
Unity2D - 디버그 및 2단점프 문제 발생 : 이전 포스팅에서 타일맵으로 오르막길을 구현한 이 후 캐릭터가 오르막길에서 점프애니메이션으로 바뀌는 버그 발생 문제 원인 : 점프애니메이션 변환을 구현하는 레이캐스트 코드에서 기존에는 타일바닥과의 거리가 0.5f보도 작을때 점프애니메이션이 false가 되도록 구현했는데 캐릭터와 오르막길 타일바닥과의 거리를 디버그로그해보니 약 0.7f정도가 나왔다 문제 해결 : 기존 rayHit.distance
Unity2D - 타일맵 1.타일맵 폴더 생성 2.Tile Palette 생성 : 타일을 사용하기위해 모아둔 프리팹 Window - 2D - Tile Palette 3.TileMap 폴더 안으로 create New Palette 4. 맵관련 sprites 들을 Tile Palette안으로 드래그앤 드랍 및 TileMap 폴더에 저장 5.Tile Palette의 팔레트 안에 있는 타일들을 정리 ( 팔레트 안에서 정리할땐 반드시 Edit을 활성화 시켜야 함) 6.계층구조창에서 Tilemap 오브젝트를 생성하면 Grid 오브젝트 아래 Tilemap 오브젝트가 생성됨 7.계층구조의 Tilemap을 클릭하면 Scene이 격자무늬로 바뀌는데 Tile Palette를 이용하여 맵을 그려준다 (*이때 Tile Palette의 Edit은 비활성..
Unity2D - 점프 1.점프구현 2. 점프 후 떨어질때 자연스럽게 구현 (코드로 점프를 구현하고 실행해보면 떨어질때 공기저항때문에 느리게 떨어진다 ) -자연스럽게 떨어지게 하는 2가지 방법이 있다. 방법1: Edit - projectSettings - physics 2D - Gravity의 Y축값을 기본 -9.81에서 -25 등으로 중력가속도 값을 높게 준다 방법2 : Player오브젝트의 속성중 RigidBody2D에서 Gravitiy Scale 값을 늘려준다 이는 현재 중력에 대한 비율로 기본 9.81중력 가속도인 상태에서 4를 주면 4배의 중력을 받는다는 뜻이다 Player오브젝트의 jumpPower값과 함께 조절한다 3.점프 애니메이션 삽입 (1) - 점프반복없애기 Jump Animation Clip에서 Loop T..
Unity2D - 이동 벡터 정의 참조:wergia.tistory.com/209[Unity3D] Vector - 좌표와 속도를 다루기 위한 도구Vector - 좌표와 속도를 다루기 위한 도구 작성 기준 버전 :: 2019.2 [유튜브 영상에서도 본 포스트의 내용을 시청하실 수 있습니다.] 이번 섹션에서는 유니티 엔진의 벡터에 대해서 알아보자. 게임 wergia.tistory.com*일반적인 벡터는 방향과 크기를 다 가지고 벡터를 정규화하면 방향만 가지고 있으며 스칼라값을 곱해서 크기를 준다.. 1.Player 키보드로 좌우이동 구현 *수정)키보드를 누르는 정도에따라 점진적으로 실수량증가는 Input.GetAxis()이고 아래의Input.GetAxisRaw()는 키보드를 누를때마다 -1 or 0 or 1씩 크기가 감소하거나 증가..
Unity2D - 애니메이션 1.애니메이션 (1) - 애니메이션으로 만들 스프라이트이미지들을 선택하고 Hierachy안의 애니메이션을 넣어줄 오브젝트(Player) 로 드로그앤 드랍 (2) - 드로그앤 드랍을 하면 파일생성창이 열리는데 sprite > Player > walk 파일을 생성하고 그 안에 저장을하면 아래와 같이 Player라는 animator 와 walk라는 animation이 생성된다 (3) - 기본적인 애니메이션의 모션관리는 animation clip에서 이루어지며 (4) - 애니메이션의 흐름로직관리는 animator에서 이루어 진다 - 아래의 박스모양 하나하나를 state라고 하며 애니메이션상태를 관리하는 애니메이터 단위이다 - player의 기본 상태를 idle로 바꾸기위해 idle state 우클릭 -> Set..