본문 바로가기

Programming

Cocos2D프로젝트 포토폴리오 제목 : Take 2 Heaven 작업기간 : 2달 작업하면서 느낀점 1. 리소스 구하기가 생각외로 어려움. 2. Cocos2D라는 라이브러리를 처음만져봄으로서 책보고 공부하면서 만드는데 시간이 생각외로 많이 걸림. 3. 아직 완전한 설계없이 시작했다가 중간에 2번 뒤집으면서 그래도 짜겠다는 신념아래 설계가 엉망으로 되었음....... 처음 설계의 중요성을 느끼게 해준 작업 4.슈퍼클래스를 만들어서 상속받는 단계가 결코 쉽지 않다는..추상화,캪슐화는 앞으로도 계속 공부해야될 슈퍼스터디 항목임. 5.하지만 유니티 보다 Cocos2D가 손맛이 좋다는거.~~ㅎㅎ 더보기
메모리 풀 클래스 만들어보기. 처음에는 단순 하게 Instantiate와 Destroy를 반복하며 몬스터나 총알 타워등을 생성 제거를 했는데.이러한 방식에 문제점을 알고 공부하여 메모리 풀 클래스를 만들어보았습니다. 여기서 말하는 문제점이란 잦은 생성 제거에 의해 메모리가 빠르게 고갈되어가고, 쌓인 가비지로 인해 버벅거리는 현상이 발생하는것입니다. 그리고 인터넷에서 메모리풀 클래스를 공부하다보니 특정 모바일 기기에서는 메모리 풀 클래스를 사용하지 않으면 상당한 발열이 생기는 현상을 확인했습니다. 무슨 이유인지 모르겠지만..... 아무튼 이번에 메모리 풀 클래스를 이용하여 만들어보겠습니다. 메모리 풀 클래스란 오브젝트를 사용하기위해 일일이 생성 하는방식이아닌 시작때 한번에 다 생성 해놓고 SetActive를 조절하여 사용하여 최대한 삭.. 더보기
FindChild 간단 설명 자식의 GameObject 찾는 방법 1. 부모.transform.FindChild("자식이름"); 2.GameObject.Find("/arm/hand/..../자식이름"); 자신에게 바로연결되어있지않는 자식은 2번 방법으로 찾아야 된다. 또다른 방법. 자식의 자식의 자식...즉 손주뻘되는 GameObject를 찾을려면. Transform[] allChilds; Transform 자식; void Start () { allChilds = transform.GetComponentsInChildren(); int childCount = allChilds.Length; for(int i=0; i 더보기
Tower Defense 만들기 1장 Tracking 정보 수집 Defense게임에서 Tracking정보수집이라니... 이유인즉. 이 빨간부분을 기점으로 Enemy들이 순서대로 Tracking Point를 찾아가게 하기 위함입니다. 먼저 필드를 만드시고 Tracking Point를 만들어 줍니다. Enemy로 쓸 놈도 하나 만들어 주시고요~ tracking point를 7개 만들어 줬습니다. 오브젝트 이름은 trakingPoints0 ~6까지. 그럼 지금 부터 스크립을 짜보겠습니다. 일단 Empty를 하나 만들고 GameManager를 만들겠습니다. 여기서 GameManager의 역활은 TrackingPoint의 정보를 수집해오는 역할을 합니다. 일단 처음 사용하는 void Awake()함수 입니다. void Awake()를 사용하는 이유는.. 더보기
[앨] SkyBox 이번에는 엔진에 있는 SkyBox기능을 사용해보겠습니다. SkyBox를 만드는 방법은 여러가지가 있습니다. 직접 메쉬로 작업하여 3DsMax에서 Sphere로 만들어 반을 자른뒤 면을 Flip시킨뒤 엔진으로 가지고와서 Fisheye Sky맵을 가지고 와서 입혀서 하는 방식이 있습니다. Fisheye Sky Map이란 이런형태로 Fisheye Lens로 촬영하여 만든맵으로 반구에 적용하여 만드는 맵입니다. 하지만 오늘 해볼 방법은 이런형태가 아닌 엔진에서 제공해주는 방법으로 큐브맵을 이용한것입니다. 큐브맵이란. 각부분을 사각형으로 조각내에 큐브처럼 만든 맵입니다. 그럼 엔진 세팅에 대해 알아보겠습니다. Edit에서 RenderSettings을 클릭합니다. 클릭하면 Inspector창에 이런게 뜹니다. Re.. 더보기
[앨] 5. 간단한 탱크게임 만들기 앞에서 공부한걸 이용하여 간단한 탱크시뮬레이션을 만들어보겠습니다. 일단 에셋스토에에서 탱크 모델링을 받아보겠습니다. Panzer_II_Ausf_F 모델로~~~ 멋지다.... 그럼 기본적으로 이동 회전에 관련해서 작업하겠습니다. 이동은 기본적으로 앞에서 했던 방식대로하는데. 탱크이므로 포탑과 주포의 회전이 있어야겠고 캐터필러역시 돌아가야겠죠. 일단 주포를 상하로 회전하기위해 Empty를 하나 설정하겠습니다. 주포를 움직이기 위해서 주포의 피봇축을 포탑과 연결된 곳에 설치하겠습니다. 포탑도 회전해야겠죠. 이 2개는 로테이션 회전으로 구현하겠습니다. 캐터필러는 로테이션으로 힘들기때문에 UV 애니메이션으로 구현하겠습니다. 먼저 포탑부터 회전 시켜보겠습니다. Q,E를 통하여 포탑의 로테이트 값을 360도 회전시킵.. 더보기
[앨]유니티 단축키 ●디자인 탭에서의 마우스 버튼 - 왼쪽 버튼 - 게임 오브젝트 선택 - 오른쪽 버튼 - 화면 회원 - 마우스 휠 - 화면 확대/축소 - 휠 드래그 - 화면 이동 - alt+왼쪽버튼 - 화면 회전 - alt+오른쪽버튼 - 줌인/줌아웃 ●File 메뉴 - Ctrl+N - 새 Scene 만들기 - Ctrl+O - Scene 열기 - Ctrl+S - Scene 저장 - Ctrl+Shift+S - 새 이름으로 Scene 저장 - Ctrl+Shift+B - Build 설정 - Ctrl+B - Build+Run - Alt+F4 - 유니티 종료 ●Edit 메뉴 - Ctrl+C/X/Y - 복사/잘라내기/붙여내기 - Ctrl+Z - 실행 취소 - Ctrl+Y - 되돌리기 - Ctrl+D - 오브젝트 복제 - Shift+D.. 더보기
[앨] 4.MakeTest 이번에는 오브젝트를 생성하는 방법을 설명하겠습니다. 어떤 오브젝트를 어떠한 이벤트로 인해서 생성 시키고 소멸시키는 방법입니다. 보통 게임에서 어떠한 모션이나 행동에 의해서 이펙트나 총알이 생성되고 소멸되고함을 볼수있는데 그러한 것들에 이용할수있겠다. 먼저 지면과 생성할 오브젝트를 만들어주자. 그리고 나서 생성한 오브젝트를 Hierarchy에서 드래그하여 프로젝트 창에 넣어주자. 그리고나서 Hierarchy창에 있는 오브젝트를 지워도되고 안지워도 된다. 안지울꺼면 해당 오브젝트에 Collider와 Mesh Renderer를 체크해지 하면된다. 지우면 해당 오브젝트가 생성될 좌표에 Create Empty를 생성해주면된다. 오늘 할 방법은 지우지 않은체 Collider와 Renderer를 해지해주고 난 다음 .. 더보기
[앨] 3.MoveTest 이번장에는 간단히 오브젝트의 이동에 관해 구현해 보겠습니다. 아주 간단한 스크립으로 구현해볼 생각 입니다. 먼저 땅과 이동한 오브젝트를 각각 만들어 줍니다. 오브젝트에 적용할 스크립트를 만들어보겠습니다. 일단 이동할 스피드를 선언해줍니다. public float speed = 1.0f; 그리고 나서 Input.GetAxis 를 통해 각각 값을 받아옵니다. 키 입력에따라 -1,0,1등이 반환 됩니다. Horizontal,Vertical등에 대해 자세히 알고싶으시면 Edit->Project Setting -> Input에 들어가시면 InputManager창이 뜹니다.이곳을 참조하세요. 계속해서~~ transform.Translate 는 사전적의미로는 뭐 번역하다...그런건데 이동하는것입니다. transfor.. 더보기
[앨] 2.BreakTest 이번에는 만들어진 오브젝트를 파괴하기위해 Break를 구현해 볼것입니다. 기본적으로 C#스크립트를 이용하여 작업하겠습니다. Project창에서 마우스 우클릭후 Create안에 C#Script를 선택 기본적으로 이런것이 생성되어있다. 이것이 무엇이냐~~ void Start() 는 이 스크립트가 시작될때 처음 실행되는것으로 한번만 실행되며 void main()과 유사하다고 볼수있다. viod Update()는 이 스크립트가 실행되는동안 계속 반복적으로 끝날때까지 실행되는 함수이다. 일단 간단히 좌우로 이동하는 스크립트를 짜보겠습니다. Start()는 굳이 현재단계에서는 필요없다.지워도 무방하다. void OnCollisionEnter()함수는 아래에 가서 다시 알아보겠다. 이동에관해 간단히 설명하자면 Vec.. 더보기