1. 문제점 오늘 팀원이 제작한 코드 중 끊임없이 나오는 몬스터들을 미리 감지하는 기능이 있었다. 이 코드를 이해하고 여기서 기능을 더 추가하려고 했지만 처음보는 기능들이 있어서 이해가 어려웠다. 그래서 오늘은 어떤 방식으로 상대방을 감지하는지 알아보려고한다. 2. LayerMask란? 32비트의 int형으로 구성되있다. 예를 들어 000000000000~.....0, 총 32개의 비트로 나타낼 수 있다. 쉽게 설명하자면 만약에 Enemy라는 Layer값을 가진 Prefab이 있다면 Enemy정보를 총 32개의 비트 중 하나에 넣는 것이다. 3. RaycastHit란? 게임오브젝트의 위치에서 인자값을 넣어준 방향과 설정한 범위 내에서 물체가 있는지 없는지 충돌감지를 해주는 기능이다. 캐스트는 Layer로..
전체 글
오늘 배운 경험을 회고하며 레벨 업 하는 곳입니다. 모르는 것은 배우고 아는 것은 베풀 수 있는 개발자로 성장하겠습니다!OnCollision, OnTrigger 가 무엇인가? 공통적으로 충돌과 관련된 기능을 구현하고 싶을 때 사용하는 메소드다. 그럼 공통된 기능이니깐 아무거나 써도 되지 않을까? 생각할 수 있지만 엄연히 둘은 다른 목적을 가지고 있다. Collision Collision은 물리 연산을 하기 때문에 무언가에 부딪혀서 물리적 반응이 나와야 할 때 사용한다. 예를 들어 공이 바닥에 닿으면 튕겨나가는 것을 말한다. Trigger Trigger는 물리연산을 하지않는다. 그래서 물체가 어딘가에 관통하여 지날갈 때나 부딪혔을 때 사라져야할 경우 사용한다. 총알과 관련된 기능을 예를 들 수 있다. Collision 기능 OnCollisionEnter(Collision) - 두 물체가 부딪혔을 때 OnCollisionSt..
deltaTime이란? 마지막 프레임이 완료된 후 경과한 시간을 초 단위로 반환하는 기능 프레임은 무엇인가? 애니메이션과 같은 연속된 사진 중 정지된 사진 한장을 프레임이라고 한다. 그래서 초당 몇 프레임을 뽑아낼 수 있는지를 나타내는 단어가 FPS 즉, Frames Per Second(초당 프레임) 다. 위에 두 개념을 보고 완벽하게 이해하기란 쉽지않다. 그래서 쉬운 예로 설명하고자 한다. 1. 10FPS가 가능한 컴퓨터 2. 120FPS가 가능한 컴퓨터 이렇게 두 개의 컴퓨터가 있다고 가정해보자. 1번 컴퓨터는 성능이 너무 안좋아서 실제 시간 10초가 지나야만 게임캐릭터가 한걸음 움직인다. 2번 컴퓨터는 성능이 좋아서 실제시간 1초만 지나도 게임캐릭터가 한걸음 움직인다. 하지만 결국 두 컴퓨터는 모두..
Enumerable.Reapeat 반복되는 단일 값이 들어 있는 시퀀스를 생성한다. 즉, 내가 원하는 Element값을 원하는 수만큼 반복하여 생성해준다는 것이다. 사용법 우선 C#에서 문자열을 다룰 때 좋을 것 같아서 string을 사용하여 예를 들었다. "a"란 값을 총 5번 반복하여 Concat기능을 사용하여 str값에 하나씩 붙인다. 답은 "aaaaa"가 나온다. 주의사항 위의 사용법에서 의문이 나올 수 있다. 그냥 Concat기능을 사용하지 않고 바로 "str += Enumerable.Repeat().." 으로 사용하면 안되는지 말이다. 하지만 이 기능의 개념을 다시보면 a를 단순히 5번반복하는 것이 아니라 "시퀀스"를 만드는 것이기 때문에 따로 기능을 사용해줘야만 붙여진다. 더군다나 Enume..
String.Replace 현재 문자열에서 본인이 정의한 유니코드 문자 또는 String을 탐지하여 발견된 모든 것들을 다른 String이나 유니코드 문자로 바꾸는 기능이다. 사용법 Replace는 string에 포함된 기능이기 때문에 본인이 선언한 문자열에서 Replace기능을 불러온다. 위에 코드를 실행하면 "bbcde"가 나오게 된다. 추가로 Replace 뒤에 "." 을 붙여서 Replace를 계속해서 사용할 수 있다. ex) str.Replace("a", "b").Replace("c", "d").Replace().... 주의사항 1. 사용법 코드 내용과 똑같은 것 처럼 보이지만 Replace한 값을 받고있지 않다. 즉, str자체의 값을 바꾸는 것이 아니어서 str값을 변경하여 다른 빈 공간에 ..
출처 : 효욜적인 약수 개수 구하기 알고리즘 :: 마이구미 :: 마이구미의 HelloWorld (tistory.com) 효욜적인 약수 개수 구하기 알고리즘 :: 마이구미 이번 글은 약수를 구하는 알고리즘을 다뤄본다.약수 구하는 방법은 어렵지 않다.하지만 조금만 응용된 약수 관련 문제라면 순수한 방법으로는 시간이 너무 오래걸린다.더 효율적인 방법을 알아 mygumi.tistory.com 약수 어떤 수를 나누었을 때 나머지가 0인 수 글을쓰게된 이유 보통 소수를 구할 때는 에라토스테네스의 체를 사용하여 효율적으로 소수를 구할 수 있다. 하지만 약수에 대해서는 여태까지 여러문제를 풀면서 효율적으로 구하는 방법을 모르고 있었다. 그래서 좋은 알고리즘을 알려주신 블로그의 코드를 참고하여 추가적으로 설명하고자 한다..
출처: [Unity] 캐릭터 이동 시 카메라 따라가기 (3인칭) (tistory.com) [Unity] 캐릭터 이동 시 카메라 따라가기 (3인칭) 캐릭터 이동을 구현하였으니, 이제 카메라가 캐릭터를 따라다닐 수 있도록 구현해봅시다. 이전에 만들었던 Scripts 폴더에 MainCamera_Action이라는 스크립트를 생성해줍니다. 이후 다음과 같이 코드 mayquartet.tistory.com 게임을 만들 때 카메라와 캐릭터가 동시에 움직여야 하는 상황이 오는데 이 때 사용하면 좋은 코드를 설명하고자 한다. 만약에 내가 만드는 게임이 3D라면 offsetY 값을 -10.0f 로 설정하여 캐릭터와 카메라가 동시에 겹치지 않게 거리를 벌려야 한다. 하지만 2D게임 이라면 카메라와 캐릭터가 동시에 같은 곳을 ..
Transaction 이란? 여러 데이터베이스 작업을 원자성 방식으로 처리할 수 있는 방법 트랜잭션이 커밋되면 모든 작업이 데이터베이스에 적용되고 트랜잭션이 롤백되면 데이터베이스에 어떤 작업도 적용되지 않는다. 개념에서 보이듯 원자성의 특징이 보이는데 원자성이란 트랜잭션의 어떠한 작업이 완전하게 진행되어 종료되거나 완전히 반영되지 않아야 한다는 개념이다. 사용하는 이유? 보통 데이터베이스와 관련하여 사용되는데 SQL로 데이터를 관리할 때 연결해서 사용한다고 한다. 데이터를 트랜잭션으로 처리할 때 세이브포인트가 자동 활성화되고 오류나 커밋에 문제가 생길 시 세이브포인트로 복구할 수 있다. 회고 사실 이 글을 쓴 이유는 프로그래머스 문제를 풀다가 생겨난 문제 때문이다. 상황을 설명하자면 문제에 대한 풀이 코..