1: 世界(屏幕)坐標(biāo)系;坐標(biāo)原點在左下角
2: 相對(節(jié)點)坐標(biāo)系,兩種相對節(jié)點原點的方式
(1) 左下角為原點,
this.node.convertToWorldSpace(cc.v2(0, 0));
this.node.convertToNodeSpace(w_pos);
(2) 錨點為原點(AR)
this.node.convertToWorldSpaceAR(cc.v2(0, 0));
this.node.convertToNodeSpaceAR(w_pos);
兩套API,帶AR后綴和不帶
3: 節(jié)點坐標(biāo)和屏幕坐標(biāo)的相互轉(zhuǎn)換;通常情況下帶AR;
4: 獲取在父親節(jié)點坐標(biāo)系下(AR為原點)的節(jié)點包圍盒;
this.node.getBoundingBox();
5: 獲取在世界坐標(biāo)系下的節(jié)點包圍盒;
this.node.getBoundingBoxToWorld();
例子:
// 節(jié)點坐標(biāo)轉(zhuǎn)到屏幕坐標(biāo) cc.p(0, 0),以節(jié)點左下角為原點
var w_pos = this.node.convertToWorldSpace(cc.p(0, 0)); // 左下角為原點的 cc.p(430, 270)
console.log(w_pos);
//加上AR后為以錨點為原點
w_pos = this.node.convertToWorldSpaceAR(cc.p(0, 0)); // 錨點為原點 cc.p(480, 320)
console.log(w_pos);
//-----------------將世界坐標(biāo)轉(zhuǎn)換為相對節(jié)點坐標(biāo)
var w_pos = cc.p(480, 320);
//以w_pos節(jié)點左下角為原點,將該坐標(biāo)(Wpos)轉(zhuǎn)換為相對于w_pos節(jié)點左下角的相對節(jié)點坐標(biāo)
var node_pos = this.node.convertToNodeSpace(w_pos);
console.log(node_pos); // cc.p(50, 50)
//以w_pos節(jié)點錨點為原點,將該坐標(biāo)(Wpos)轉(zhuǎn)換為相對于w_pos節(jié)點錨點的相對節(jié)點坐標(biāo)
node_pos = this.node.convertToNodeSpaceAR(w_pos);
console.log(node_pos); // cc.p(0, 0)
// 獲取節(jié)點的包圍盒, 相對于父親節(jié)點坐標(biāo)系下的包圍盒
var box = this.node.getBoundingBox();
console.log(box);
// 世界坐標(biāo)系下的包圍盒
var w_box = this.node.getBoundingBoxToWorld();
console.log(w_box);
this.node.on(cc.Node.EventType.TOUCH_START, function(t) {
var w_pos = t.getLocation();
var pos = this.node.convertToNodeSpaceAR(w_pos);
console.log(pos);
pos = this.node.convertTouchToNodeSpaceAR(t);
console.log("====", pos);
}, this);
// 把當(dāng)前這個sub移動到世界坐標(biāo)為 900, 600;
//
// 把世界坐標(biāo)轉(zhuǎn)到相對于它的父親節(jié)點的坐標(biāo)
var node_pos = this.node.parent.convertToNodeSpaceAR(cc.p(900, 600));
this.node.setPosition(node_pos); // 相對于this.node.parent這個為參照物,AR為原點的坐標(biāo)系
// end
// 獲取當(dāng)前節(jié)點的世界坐標(biāo);
this.node.convertToWorldSpaceAR(cc.p(0, 0));
//觸摸事件所返回的坐標(biāo)對象
var pos = this.node.on(cc.Node.EventType.TOUCH_START,function(e){
//方法1
var Wpos = e.getLocation();
var pos = this.node.convertToNodeSpaceAR(Wpos);
cc.log(Wpos+"<----->"+pos);
//方法2
pos = this.node.convertTouchToNodeSpaceAR(e);
cc.log("**********"+pos);
},this);
//.把該點轉(zhuǎn)成世界坐標(biāo)(只能老爸轉(zhuǎn))
var pos1 = this.cocos2.parent.convertToWorldSpaceAR(this.cocos2.getPosition());
console.log(pos1)
//把該點(世界坐標(biāo))轉(zhuǎn)成節(jié)點坐標(biāo)
var pos2 = this.cocos1.convertToNodeSpaceAR(pos1);
console.log(pos2)