Notice
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Today
Total
관리 메뉴

만재송

[Cocos Creator] Tiled Map 정복하기 (6) - Tile Map 제거 본문

프로그래밍/COCOS Creator

[Cocos Creator] Tiled Map 정복하기 (6) - Tile Map 제거

만재송 2018. 2. 12. 03:12

아이템을 먹어보자


아이템이 있는 타일에 도착했을 때 아이템을 없애는 기능을 추가하자. 기존에 만든 TiledMap 스크립트를 실행시키면 아이템에 있는 타일에 도착했을 때 실행하는 문구가 빠져있다. (실수 아니다.)


setTargetPosition: function (addingTilePos, addingTargetPos) {
var tilePos = cc.v2(this.tilePos.x + addingTilePos.x, this.tilePos.y + addingTilePos.y);
var tileGID = this.metaLayer.getTileGIDAt(tilePos);
if (tileGID) {
var properties = this.tiledMap.getPropertiesForGID(tileGID);
if (properties != null) {
if (properties["collisionType"] === "obstacle") {
return;
} else if (properties["collisionType"] === "item") {
}
}
}
this.tilePos = tilePos;
this.target.x += addingTargetPos.x;
this.target.y += addingTargetPos.y;
},


이제 else if 문을 채울시간이다. 아래와 같이 추가해보자.


setTargetPosition: function (addingTilePos, addingTargetPos) {
var tilePos = cc.v2(this.tilePos.x + addingTilePos.x, this.tilePos.y + addingTilePos.y);
var tileGID = this.metaLayer.getTileGIDAt(tilePos);
if (tileGID) {
var properties = this.tiledMap.getPropertiesForGID(tileGID);
if (properties != null) {
if (properties["collisionType"] === "obstacle") {
return;
} else if (properties["collisionType"] === "item") {
this.metaLayer.removeTileAt(tilePos);
this.itemLayer.removeTileAt(tilePos);
}
}
}
this.tilePos = tilePos;
this.target.x += addingTargetPos.x;
this.target.y += addingTargetPos.y;
},


아이템 타일에 도달했을 때 해당 위치에 있는 타일의 좌표를 이용해서 타일을 제거하는 방식이다. 해당위치에 있는 metaLayer, itemLayer에 있는 타일을 removeTileAt 메서드를 이용하여 삭제한다. 물론 itemLayer 를 사용하기 위하여 onLoad에 itemLayer 프로퍼티를 추가하는것도 잊지마라.


this.itemLayer = this.tiledMap.getLayer("Item");


실행하면 외계인이 선인장에 도달했을때 사라지는 기능을 보게될것이다.






참고




Tiled Map 정복 시리즈



Comments