728x90
반응형

Game Development, 게임개발/개발 98

GameObject를 입력받아서 방향대로 움직이기 [Unity 3D]

움직이게 하는 것은 translate()라는 메서드로 한다고 배웠다. 그렇다면 Input을 받아서 하는 것은?? 우리가 기본적으로 WASD가 방향을 뜻하는 것을 알고 있다. 과연 유니티도 그럴까? Edit의 Project Settings로 가보자 저기 왼쪽 tab에 Input이 있네? 음 WASD가 보이나? Negative, Positive 하면서 써있다. 여기서 왜 Negative, Positve로 나눌 수 있냐면.. 좌표평면을 생각해보면 알 수 있다. Y가 +면 위쪽 이니까 아래쪽은 - 겠지? X도 마찬가지다. ++저기있는 Name을 잘 기억해두고 이용할 수 있다는 것을 알아야 한다. 나중에 Call 할 때는 Name을 이용할 거니까. 그럼 약간 코드를 수정해주자 public class PlayerC..

Play 중인지 아닌지 쉽게 구별하기, Preferences[Unity]

맨날.. 하다보면 수정을 하거나 무엇인가를 하는데 왜 안돼? 하면 꼭 Play를 눌러놓은 상태여서 안되는 경우가 많다. 그래서 쉽게 구별하기 위해 하나 소개하려고 한다. 지금 당장 Edit를 누른다 거기서 당장 preferences를 누른다 바로 Color로 들어간다 수많은 것들이 있지만 나머지는 익숙해서 버리고 Playmode tint를 보자.. ?색이 없나? 하고 봤더니 있긴 하지만 우리가 눈치 챌만큼은 아니었다. 분명 Playmode를 누르면 살짝 회색빛으로 변하지만 생각안하면 그냥 그렇구나하고 넘어갈 정도다. 그래서 눈에 띄게 바꿔주기로 했다. (204,204,54,104)로 했다. 마지막은 투명도 오줌 지린 LCD 액정같다. 하지만 Playmode인지는 누가봐도 알겠다. 사실 Preference..

카메라 플레이어에게 고정하기, Unity 3D

GameObject는 움직이는데 카메라는 움직이지 않는 경우가 있다. 그럴 때 어떻게 해야할까? 마치 이렇게.. Main Camera를 어떻게좀 해야겠지..? 그래서 스크립트를 하나 만들자. "FollowPlayer"라고 이름지어서 만들자. 항상 스크립트 제목은 명확하게 뭔지 알 수 있게 지어야한다. 짧게가 아니라! 뭔 스크립트인지 알 수 있게 !! 그 후 짧게 짓는 것이다. public GameObject player; // subject // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { transform.position = player.tran..

SerializeField의 개념 [Unity]

하도 사람들이 쓰긴 하는데 잘 모른다? 그치? 그래서 알아보자 유니티에서 변수를 선언할 때 public이나 private 같은 접근제한을 선언하고는 한다. ++ protected도 있긴 하다. 접근 제한자는 왼쪽 링크에서 따로 다뤄보자. 그리고 public을 썼을 때 인스펙터 창에서 접근할 수 있다. 또한 public으로 선언하면 다른 스크립트에서 접근가능하다. 그런데 왜 만들었냐면? 외부 스크립트에서 수정을 못하게, 참조할 필요도 없는 변수를 접근해서 쓸데 없는 상황을 만들지 않기 위해!!! 인스펙터에서 접근 가능하지만 외부 스크립트에서 접근이 불가능하게 막으려고 한다. 그래서 SerializeField를 쓴다. private 변수를 인스펙터에서 접근가능하게 해주는 기능으로 원하는 변수 앞에 [Seri..

[Unity] 2D에서 충돌하면 떨어뜨리기

내가 제일 좋아하는 새인 토코투칸을 떨궈보았다. ㅎㅎ 스크립트를 보여주자면 처음 내가 대충 만들었던 개요 요구사항 1. 새가 왔다갔다했으면 좋겠다. 2. 와서 뭔가가 박으면 떨어졌으면 좋겠다. 3. 새는 좌우로만 이동했으면 좋겠다. 필요한 사항 GameObject 새 tag 특정한 물체 충돌 감지 rigidbody2D ,자연스럽게 떨구기 위해 중력을 이용 gravityscale collider2D 뭔가가 박았다는 것을 감지 istrigger transfrom 새의 이동 Vector2 좌표 OntriggerEnter2D 충돌감지 other.tag == ... 특정 물체 충돌감지 하다보니까 여러개가 만들어졌다. 컴포넌트는 이렇게 Collider가 왜 2개냐면 is Trigger를 키면 물리적 효과가 사라져서..

[Unity] 2D에서 자석 구현하기 !!

오늘은 유니티에서 자석을 구현해보겠습니다. 지금은 공부한 것을 써놓은 것이니까 그렇게 힘들게 안하지만 나중에는 유튜브로 찍어서 올리지 않을까...ㅋㅋㅋ 왜 자꾸 뜬금없냐면 그냥 게임만들다가 그 때 생각난 것을 글로 써서 그래요 ㅎㅎ 어떤 식으로 자석을 구현할 것이냐면 자석에 코인이 끌려오고 코인이 자석에 닿으면 없어지게 만들 거에요. 우선 어떤식으로 할거냐면 이런 식으로 할 건데요 그러면 코인이랑 자석이 필요하겠죠?? 만듭니다. 완성 이후의 inspector 창입니다. 제가 완성시킨거고 원래는 처음에 만들고 1.rigidbody2d 추가 2.collider 추가 3. script 추가 4.tag 추가 5.istrigger 체크 네가지를 해주셔야 합니다. 그리고 자력의 범위를 정해야하겠죠?? 그래서 코인 ..

[Unity] 가상패드 만들고 가상패드에서 벡터 가져오기

이것또한 공부중이니 더 효율적인 것이 있으면 댓글주세요 ㅎ 가상패드를 왜 만드느냐??? 방향을 밖에서 입력받아오려고 만들었는데 모바일에선 저렇게 생긴 패드가 많은데 어떻게 만들었느냐??? 2D Object 중에서 New Sprite를 2개 만든다 Sprite 모양은 Knob이다. 색도 바꾸고 두개를 겹쳐야해서 위에 올 Sprite를 Children 으로 만들고 Scale 조정을 해준다 겹쳐서 보이지 않을 경우 Layer 조정을 해준다. 그럼 이렇게 나온다. 이제 프로그래밍 단계로 넘어가자 이 스크립트는 방향과 힘을 입력받기 위한 패드를 만들기 위한 것이었다. 힘을 위한 가상패드는 위와 같이 비슷하게 만들면 된다. 우선 RectTransform 값을 받아와야한다. 기준이 있어야 방향을 판단할 수 있으니까 ..

[Unity] 게임오브젝트 배열로 받기 (clone 생성시)

GameObject 의 자료형을 가진 배열을 반환한다는 뜻이다. 우선 배열을 왜쓰냐..? GameObject에서 clone을 만들 때... clone을 다루려면 어떻게 해야할까 생각중에 clone을 배열에 넣어놓으면 빼서 쓰면 되겠구나라는 생각으로 배열로 만들기로 했다. GameObject 의 배열 선언은 저렇게 public GameObject[] bottle; 어디서 본 것 같은 배열선언법??? ㅋㅋㅋㅋㅋ 그렇다면 배열을 만들었으면 이제 원소를 넣어야지? GameObject의 타입이니까 GameObject만 들어가겠지? 그렇다면 어떠한 GameObject가 들어가야할까? Tag중에서 "ㅁㅁㅁ"인 것만 원소로 들어갔으면 좋겠다. 라고 생각 그래서 bottle = GameObject.FindGameObje..

728x90
반응형