본문 바로가기

Unity

(65)
조준(Aim) 시스템 구축 마우스를 바라보는 방향으로 무기를 조준해보기 [ 쿼터니언(Quaternion) ]유니티 인스펙터 창에서 나오는 회전은 Vector3로 표현되며, 이를 오일러각(Euler Angle) 이라고 한다하지만, 시중의 많은 3D 소프트웨어는 내부적으로 쿼터니언을 사용쿼터니언을 사용할 시 짐벌 락(Gimbal Lock) 문제를 피할 수 있음짐벌락 ㅡ> 극단적인 각도로 회전할 경우 한 축으로의 회전을 잃어버리는 것https://youtu.be/yxMQKsab5TQ?si=mbRGEn3Gtn429ntB수학적으로는 4차원 복소수를 이용한 회전 표현으로 (x, y, z, w) 형태로 표현직접 x, y, z, w값을 조정하지 말 것직접 값을 변경하거나 계산하는 대신, Unity의 내장 함수를 사용하는 것이 좋다.(예: Qua..
충돌 처리와 맵 구성 [ 충돌 ] Collider 게임 오브젝트에 물리적 형태를 부여충돌 감지를 가능BoxCollider는 사각형, SphereCollider는 구형, MeshCollider는 복잡한 메시 형태  Rigidbody 게임 오브젝트에 물리 법칙을 적용Rigidbody가 있는 오브젝트는 중력에 영향을 받고, 힘과 토크를 통해 움직임충돌하려면 최소 한 쪽에는 Rigidbody 컴포넌트가 붙어있어야 Collider와 충돌할 수 있음Trigger 충돌도 Rigidbody 필요한데, 움직이는 쪽이 물리 시뮬레이션을 하면서 충돌 체크를 하기 때문  충돌 발생 시 Unity는 OnCollisionEnter, OnCollisionStay, OnCollisionExit 등의 이벤트를 발생 가능🚧 주의!  2D는 각각 뒤에 2D..
구조와 설계 샘플 [ InputManager의 문제점 ] 그러므로 우리는 New Input System 을 활용할 것이다 [ 설계 샘플 - 옵저버 패턴 ] [ 기본 설계 ]TopDownController : 캐릭터, 몬스터의 전반적인 행동 정의PlayerInputController : 플레이어들의 키보드 입력이나 마우스 클릭TopDownMovement : 이동해야할 때 이 것을 호출함 [ 입력 받을 준비하기 ] [ 플레이어 생성하기 ] TopDownController.cs캐릭터와 몬스터의 공통적인 기능을 넣어놓는 곳 PlayerInputController.cs TopDownMovement.cs
핵심 기능 소개 [ PPU ]Pixels Per Unit 스프라이트의 픽셀 수와 해당 스프라이트가 게임 세계에서 차지하는 공간의 관계를 설명합니다.예를 들어, PPU가 100이라면 스프라이트의 100픽셀은 게임 세계에서 1 유니티 단위를 나타냅니다. PPU 값이 클수록 스프라이트는 작아집니다.이는 더 많은 픽셀이 동일한 게임 세계의 공간에 매핑되기 때문입니다. PPU 값은 물리 시뮬레이션에 영향을 미칩니다.높은 PPU 값은 더 작은 스프라이트를 생성하므로, 이는 더 높은 해상도의 물리 시뮬레이션을 가능하게 합니다. 높은 PPU 값은 더 많은 연산을 필요로 합니다.이는 성능에 영향을 미칠 수 있습니다.따라서, 필요한 만큼의 PPU 값을 설정하는 것이 중요합니다. 모든 스프라이트에 대해 일관된 PPU 값을 사용하는 것이 좋..
이벤트 함수 실행 순서 및 특징 Monobehaviour를 상속받는 클래스들은 유니티 이벤트 함수를 활용게임 오브젝트의 생명 주기 동안 호출되는 특정한 메서드들의 순서와 타이밍게임 오브젝트의 생성, 초기화, 업데이트, 파괴 등과 관련된 작업을 수행  Awake: 게임 오브젝트가 생성될 때 호출되는 메서드입니다. 주로 초기화 작업이 수행됩니다.OnEnable: 게임 오브젝트가 활성화될 때 호출되는 메서드입니다.Start: 게임 오브젝트가 활성화되어 게임 루프가 시작될 때 호출되는 메서드입니다. 초기 설정 및 시작 작업을 수행합니다.FixedUpdate: 물리 엔진 업데이트 시 호출되는 메서드입니다. 물리적인 시뮬레이션에 관련된 작업을 처리할 때 사용됩니다.Update: 매 프레임마다 호출되는 메서드로, 게임 로직의 주요 업데이트가 이루어..
테스팅 하는 방법 (빌드)
객체가 충돌했을 때 회전을 가하는 방법 체크 했을 시 해당 포지션의 움직임을 제한시킴정적인 부분을 원한다면 모두 체크하면 된다 공이 휘는 이유는 컨스트레인츠 z값에 체크를 하지 않았기 때문이다
* 광고 붙이기 유니티 에드를 통해서 광고 붙이기
* 효과음 & 배경음악 넣기 Card 프리팹에 AudioSource 컴퍼넌트를 추가 AudioClip 인스턴스에 원하는 음악을 설정 스타트함수에 들어간 로직은 애드컴퍼넌트로 추가한 AudioSource 안에있는 AudioClip 인스턴스을 실행시킨다 그런데 로직을 작성한 카드 프리팹에는 배경음악을 넣을 일이 없으므로 None으로 두며 Card 스크립트에 있는 Clip 인스턴스를 통해서 효과음만 관리해주면 됄 것이다 카드를 누를때 마다 효과음을 넣고 싶다면 Play()가아닌 PlayOneShot()은 오디오 클립끼리 겹치지 않고 한 번 실행시킨다 ()안에는 변수를 넣어주고 생성된 clip 인스턴스에 효과음을 넣어주면 된다 배경음악은 AudioManager 오브젝트를 생성하고 스크립트를 만들어줘서 관리해주자 가정을 해보자 A씬과 B씬이..
미니 게임 천국 [ 파트 별 영상 ]Game 1 Game 2 Game 3 Game 4 [ 최종 프로젝트 영상 ]미니 게임 천국 [ 개발하면서 아쉬웠던 부분들 ]① 스크립트가 불필요하게 많음GameManager 스크립트를 예로 들어보면,각 게임마다 GameManager1~4를 사용하여 제작하였다.이 4개의 스크립트를 GameManager 스크립트 하나에 통합하는 것이 작업하는 부분에 있어서훨씬 효율적이고 가시성이 좋을 것 같다. ②  게임이 끝나고 SelectScene으로 돌아올 때 화면전환과 동시에 해당 게임의 BGM을 꺼주고 SelectScene의 BGM을 나오도록 하는 부분을 고려해야 함 ③ Build Settings 누락스크립트뿐만이 아니라 Scene 또한 많다보니각각의 Scene 전환 과정에서 Build Sett..
카드 뒤집기 게임 완성 30초가 지나면 게임이 종료되도록 설정
⑦ 게임 끝내기 모든 카드의 짝을 맞췄을 때, 게임이 끝나는 기능을 만들어야 한다. 게임이 끝나고 문구를 클릭했을 때 다시 실행이 가능하도록 하는 EndingTxt를 구현해 보자 게임이 끝나기 위한 조건 = 남아있는 카드가 존재하지 않는 경우 END 문구를 눌렀을 때, 재 실행되는 기능을 구현해 보자