개발일지 37

241018(금) [팀과제 input 리펙토링]

오늘은 구 input 대신 new input system으로 리펙토링 했다.  기존 input manager가 지워져서 ball과 충돌이 있었으나  input system 타입을 바꾸고 vector2 → float(좌우만 움직이므로 vector2 필요없음) PlayerInputController에서 public float moveInput 선언한뒤 ball.cs에서 아래 코드 가져오는 부분을 수정하여 오류 수정PlayerInputController inputController;void Start(){ inputController = GameObject.FindGameObjectWithTag("Player").GetComponent();...생략} switch문과도 충돌이 있었으나 팀원분의 도움으로 ..

개발일지 2024.10.18

241016(수) [AddForce 함수]

수준별 실습 과정에서 Addforce 함수를 사용하여 로켓을 쏘아 올리는 문제가 있었다.그렇다면 Addforce 함수가 뭘까?  Addforce 함수에 마우스 커서를 갖다대면 이렇게 나온다. 언뜻보면 Rigidbody2D라는 강체에 물리적인 힘(Force)을 더해주는(Add) 함수인 것 같았다. 처음 코드 작성은 rb.AddForce(Vector2.up * SPEED)로 했다. (방향*스피드) 그러나 문제가 발생했다.로켓이 올라가지 않았다. (정확히는 올라가지 않는 것처럼 보였다) 이유를 알기 위해 튜터님에게 질문했고  Addforce 함수, Vector2에 대해 학습이 필요할 것 같다고 조언해주셨다.Addforce 함수에 대해 알아보기Addforce 함수에 관 확인해 본 결과 Addforce는 처음 생..

개발일지 2024.10.16

241011(금) [스파르타 타운 과제 : 필수 기능]

캐릭터 만들기 Hierachy창에서 캐릭터 게임 오브젝트를 만들고 Sprite Render를 추가해서르탄이 이미지를 추가했다. 캐릭터 이동처음엔 구 인풋 시스템을 활용한 코드를 복습할겸 썼다.public class InputManager : MonoBehaviour{ Rigidbody2D rb; [SerializeField] private float speed; // Update is called once per frame private void Start() { rb = GetComponent(); } void Update() { float vertical = Input.GetAxisRaw("Vertical"); float..

개발일지 2024.10.11

241010(목) [스텟 시스템 Base 내용정리]

열거형(Enum)1) 상수형 값에 의미를 부여하기 위해 사용2) 기본타입 int3) 제일 앞의 값을 0으로, 이후 1씩 증가함4) 중간에 번호 체계를 변경할 수 있는데 이럴 경우 직접 상수 값을 넣어줘야 함  스크립터블 오브젝트 (Scriptable Object) 1) Unity에서 데이터를 저장하고 관리하는 유연한 데이터 컨테이너2) 게임에서 재사용 가능한 데이터 또는 설정을 저장하는데 사용3) 코드와 데이터 분리하여 코드를 더 깔끔하고 관리하게 쉽게 만듬4) 하나의 스크립터블 오브젝트를 여러 게임 오브젝트에서 참조 또는 재사용 할 수 있다. 스크립터블 오브젝트를 사용하려면 스크립터블 오브젝트를 상속받아야 한다.실제로 만드는 작업 필요하므로 CreateAssetMenu 필요using UnityEngin..

개발일지 2024.10.10

241008(화) [쿼터니언(Quaternion), 삼각함수와 역삼각함수]

유니티 인스펙터 창에서 나오는 회전은 Vector3(x, y,z)로 표현되며 이것을 오일러각(Euler Angle)이라고 한다.그러나, 많은 3D 소프트웨어는 짐벌락 문제로 인하여 쿼터니언(Quaternion)을 사용하고 있다. 왜 쿼터니언을 사용하는가? : 극단적인 각도로 회전할 경우 한 축으로 회전을 잃어버리는 짐벌락(Gimbal Lock) 문제를 예방할 수 있기 때문이다. 쿼터니언(Quaternion)1) 4가지 복소수를 이용한 회전 표현 방법으로 (x, y, z, w) 형태로 표현한다.2) 직접 값을 변경하는건 추천하지 않으며 대신 Unity의 내장 함수를 사용한다.(Quaternion.Euler, Quaternion.LookRotation, Quaternion.Slerp)3) 쿼터니언은 직관적인..

개발일지 2024.10.08

241007(월) [Input Manager, 무엇이 문제일까?]

구 인풋 시스템(Input Manager) 캐릭터의 입력과 이동을 담당하는 이동 코드로서 구 인풋 시스템 (Input Manager)를 기반으로 코드를 작성한다. 여전히 많이 사용되는 코드지만 Input Manager는 문제가 있다. 구 인풋 시스템(Input Manager), 무엇이 문제인가?1) 조이스틱 등 다양한 입력 장비 대응에 부족하고, 키를 변경하거나 다양한 플랫폼에 대응하기 어렵다.2) 구현한 내용이 모두 한 클래스에 모여있어 유지보수성과 확장성이 떨어진다.  객체지향 프로그래밍에서 기능별로 클래스를 나누는 것을 단일 책임 원칙(Single Responsibility Principle)이라고 한다.또한, 단일 책임 원칙은 모든 클래스는 하나의 책임만 가진다는 원칙이기도 하다.그러므로 Inpu..

개발일지 2024.10.07

241002(수) [팀과제: 로딩 구현]

오늘은 콘솔 부분을 건드려 보았다.Console.Write("던전에 입장중 입니다");for (int i = 0; i  단순히 콘솔이라고 해서 바로바로 창을 넘어가는것보다는실제 게임처럼 로딩 과정을 거쳐 던전에 입장하면 조금 더 낫지 않을까 생각하여반복문을 통하여 추가했다. Beep는 경고음  실행장면 보통 게임이라고 하면 인트로에 스토리를 넣기에이부분도 유니티에 startscene처럼 새로 만들어서 콘솔 기능을 넣을까 고민했는데아직은 다른 기능에 조금 집중해야 할때인것 같아 보류 콘솔 기능을 찾아보니 단순히 색을 바꾸는 것 뿐만 아니라 정말 다양하게 있었다. 활용만 한다면 콘솔창이지만 진짜 게임같은 기능도 추가할 수 있을 것 같다. foreach문을 활용하여 문장이 입력되는 기능도 있다.foreach ..

개발일지 2024.10.02

241001(화) [팀과제, 인터페이스와 열거형]

팀과제 부분 스킬을 추가했다. 각 직업군 특성에 맞는 스킬과 확률에 따른 치명타 구현 코드 작성시 빨간줄이 떠서 확인을 해봤다. 문제점: 스킬 2가지를 구현했고 도적에만 적용되는 스킬(재화 획득)과 궁수와 전사에 적용되는 스킬(공격력 증가)이 따로 적용했는데인터페이스에 관련 메서드를 둘다 넣어서 클래스에 둘다 구현하지 않으면 오류가 발생했다.도적엔 공격력 증가 스킬이 필요가 없고  궁수와 전사에는 재화 획득 스킬이 필요가 없는데인터페이스 특성상 인터페이스에 구현되어 있는 내용을클래스에 구현 하려다 보니 둘다 구현할 수 밖에 없게된 것이다. 시도한부분: 해당 클래스에 사용하지 않은 메서드도 구현하여 우선 빈칸으로 두었다. 해결방법: 인터페이스에 2개의 공통 메서드를 지우고 각기 다른 클래스에 메서드를 구현..

개발일지 2024.10.01

240927(금) [해설 강의를 통해 추가로 알게 된 부분 정리]

저번에 적은 내용은 제외하고 정리했다. 먼저 문자에 대한 예외 처리int result;while (true) // 반복해서 실행할 수 있도록{ string input = Console.ReadLine(); bool isNumber = int.TryParse(input, out result); // 문자에 대한 예외처리 코드 if(isNumber) { break; } Console.WriteLine("잘못된 입력입니다");} 해설더보기사용자가 입력한 값이 input 변수에 저장되고 TryParse에 int 결과가 들어감 입력한 값이 숫자가 아니라면 TryParse 의 값이 False 처리되므로  if문을 빠져나가고 while문을 다시 반복입력한 값이 숫자..

개발일지 2024.09.27