목록프로그래밍/COCOS2D-JS (7)
만재송
shape의 기능 이전장까지가 chipmunk의 기본적인 기능이었더라면, 이번장은 코드를 훨씬 더 간단하게 구현하기 위해 심화기능을 알아볼 차례다. 충돌에 관여하는 shape는 우리의 코드작성을 덜어주기위해 많은 기능을 가지고 있다. 그중 알아두면 유용한 기능을 몇가지 설명하겠다. setElasticity, setFriction shape는 탄성과 마찰력을 설정할 수 있다. 사용법은 간단하다. 아래의 코드를 보자.addPhysicsCircle: function() { var sprite = new cc.PhysicsSprite(res.orange); var body = new cp.Body(10, cp.momentForCircle(10, 0, 64, cp.v(0, 0))); body.setPos(cp.v..
body, shape 제거 왜 제거하는 부분을 따로 다루지? 하는 생각도 했을 것이다. 그런데 무턱대고 지우다가 오류만 보는꼴을 볼것이다. 두 물체가 충돌했을 때 두 물체를 지우고 싶은 코드를 구현한다면 어떻게 해야할까? 이전장에 배운 CollisionHandler 로 처리하면 쉬울 것이다. 이전장에서 배우지않고 넘어간 부분이 있을 것이다. 아래코드를 보자.var beginHandler = function(arbiter, space) { return true; };모든 충돌 콜백은 2개의 파마리터 arbiter, space를 가진다. space는 딱봐도 맨처음에 선언한 Space 같은데 arbiter는 무엇일까?? arbiter에 대해서 설명해주겠다. arbiter는 부딪친 두 물체의 shape 정보를 ..
충돌체크 2개의 물체, 아니면 2개이상의 물체들이 충돌했을 때 일어나는 일을 수행하고 싶을때가 있다. 예로들면 똥피하기 같은 게임에서 똥이 바닥에 부딪쳤을 때 똥을 제거하고 싶다거나 플레이어가 똥에맞았을때 게임을 종료하는 함수를 실행하고 싶을때도 필요하다. 그래서 우리는 chipmunk 라이브러리에 있는 충돌체크 기능을 통해서 일을 수행 할 것이다. 준비단계 일단 이전 GameScene코드에서 addPhysicsBox 메서드를 추가하자. 이 메서드 안에는 사각형 모양의 물리기능을 갖는 Sprite를 생성 할 것이다.addPhysicsBox: function() { var sprite = new cc.PhysicsSprite(res.crate); var body = new cp.Body(10, cp.mom..
Sprite에 물리 적용하기 물리에 대해서 어느정도 배웠으니 이제 Sprite에 물리를 적용시켜보자. 먼저 addSpriteCircle메서드를 만들어서 Sprite를 생성해보자.addSpriteCircle: function() { this.circleSprite = new cc.Sprite(res.orange); this.addChild(this.circleSprite); },여러분이 아는 그 코드다. cocos2d를 처음 배울 때 사용하는 Sprite 생성방법 그대로다. 리소스는 대충 아무 파일을 사용하기 바란다. 그런데 이방법으로 어떻게 Sprite에 물리를 입힐 수 있는것일까? 정답은 바로 물리가 움직이는 길에 Sprite의 포지션을 변경하면 된다.update: function(dt) { this...
staticBody 게임을 구현하다보면 밀어도 밀리지 않는 벽을 생성하고 싶다고 하자. 근데 지금까지 배운방법으로 하면 운동성이 있는 body로 인하여 뒤로 밀릴것이다. 아니면 무게를 무한대로 줘서 움직일 수 없게 해야하는 건가... 그렇다고 body를 없애버리면 shape를 생성하지 못해서 시도도 할 수가 없다. 충돌은 하지만 운동의 기능은 전혀 없는 물체를 만들려면 어떻게 해야할까? 그 방법이 바로 staticBody이다. staticBody는 chipmunk 내부 라이브러리에서 정의한 무게가 무한대인 body이다. 물체끼리 충돌을해도 튕기거나 밀려나가지 않고 그자리에서 가만히 있는다. body가 있지만 body의 기능을 하지않는다고 생각하면 될 것이다. 땅을 생성해보자 전에 구현한 GameScene..
body 와 shape body와 shape는 물리에서 가장 중요한 기능을한다. 그러므로 이부분은 꼭 숙지를 하기 바란다. body는 물체에 물리적 특성 부여한다. 물리적 특성이라는 말은 속도, 회전, 중력, 저항 등 무언가를 움직일 수 있게 해준다. body는 따로 모양을 가지고 있지 않고, shape를 통해 모양을 가지게 된다. 그럼 body를 한번 생성해보자. 위의 GameScene에서 addPhysicsCircle 메서드를 추가하여 아래와 같이 구현해보자.addPhysicsCircle: function() { var body = new cp.Body(10, cp.momentForCircle(10, 0, 64, cp.v(0, 0))); body.setPos(cp.v(360, 720)); this.s..
물리엔진이란? 게임에서 현실세계의 동작을 쉽게 표현해주는 게임제작툴 이라고 생각하면 될 것 같다. 게임을 만들다 보면 물체의 낙하, 마찰 등 여러가지 물리계산이 필요한 가상공간을 생성하게 되는데 이러한 가상공간을 쉽게 표현해주는 도구라고 생각하면 될 갓 같다. 물리엔진 라이브러리는 chipmunk, box2d 등 여러 라이브러리가 있는데, cocos2d가 chipmunk 라이브러리를 더욱 간편하게 사용할 수 있게 구현이 되어있다. 그럼 이제 chipmunk를 cocos2d에서 어떻게 사용하는지 알아보자 들어가기전에 chipmunk 라이브러리를 사용하기 위해서는 project.json의 modules 프로퍼티에 "chipmunk"를 추가해야 한다."modules" : ["cocos2d", "external..