cocos creator坐標(biāo)系
1: 世界(屏幕)坐標(biāo)系;坐標(biāo)原點(diǎn)在左下角
2: 相對(duì)(節(jié)點(diǎn))坐標(biāo)系,兩種相對(duì)節(jié)點(diǎn)原點(diǎn)的方式
(1) 左下角為原點(diǎn),
this.node.convertToWorldSpace(cc.v2(0, 0));
this.node.convertToNodeSpace(w_pos);
(2) 錨點(diǎn)為原點(diǎn)(AR)
this.node.convertToWorldSpaceAR(cc.v2(0, 0));
this.node.convertToNodeSpaceAR(w_pos);
兩套API,帶AR后綴和不帶
3: 節(jié)點(diǎn)坐標(biāo)和屏幕坐標(biāo)的相互轉(zhuǎn)換;通常情況下帶AR;
4: 獲取在父親節(jié)點(diǎn)坐標(biāo)系下(AR為原點(diǎn))的節(jié)點(diǎn)包圍盒;
this.node.getBoundingBox();
5: 獲取在世界坐標(biāo)系下的節(jié)點(diǎn)包圍盒;
this.node.getBoundingBoxToWorld();
// 節(jié)點(diǎn)坐標(biāo)轉(zhuǎn)到屏幕坐標(biāo) cc.p(0, 0),以節(jié)點(diǎn)左下角為原點(diǎn)
var w_pos = this.node.convertToWorldSpace(cc.p(0, 0)); // 左下角為原點(diǎn)的 cc.p(430, 270)
console.log(w_pos);
//加上AR后為以錨點(diǎn)為原點(diǎn)
w_pos = this.node.convertToWorldSpaceAR(cc.p(0, 0)); // 錨點(diǎn)為原點(diǎn) cc.p(480, 320)
console.log(w_pos);
var w_pos = this.node.convertToWorldSpace(cc.p(0, 0)); // 左下角為原點(diǎn)的 cc.p(430, 270)
console.log(w_pos);
//加上AR后為以錨點(diǎn)為原點(diǎn)
w_pos = this.node.convertToWorldSpaceAR(cc.p(0, 0)); // 錨點(diǎn)為原點(diǎn) cc.p(480, 320)
console.log(w_pos);
//-----------------將世界坐標(biāo)轉(zhuǎn)換為相對(duì)節(jié)點(diǎn)坐標(biāo)
var w_pos = cc.p(480, 320);
//以w_pos節(jié)點(diǎn)左下角為原點(diǎn),將該坐標(biāo)(Wpos)轉(zhuǎn)換為相對(duì)于w_pos節(jié)點(diǎn)左下角的相對(duì)節(jié)點(diǎn)坐標(biāo)
var node_pos = this.node.convertToNodeSpace(w_pos);
console.log(node_pos); // cc.p(50, 50)
//以w_pos節(jié)點(diǎn)錨點(diǎn)為原點(diǎn),將該坐標(biāo)(Wpos)轉(zhuǎn)換為相對(duì)于w_pos節(jié)點(diǎn)錨點(diǎn)的相對(duì)節(jié)點(diǎn)坐標(biāo)
node_pos = this.node.convertToNodeSpaceAR(w_pos);
console.log(node_pos); // cc.p(0, 0)
var w_pos = cc.p(480, 320);
//以w_pos節(jié)點(diǎn)左下角為原點(diǎn),將該坐標(biāo)(Wpos)轉(zhuǎn)換為相對(duì)于w_pos節(jié)點(diǎn)左下角的相對(duì)節(jié)點(diǎn)坐標(biāo)
var node_pos = this.node.convertToNodeSpace(w_pos);
console.log(node_pos); // cc.p(50, 50)
//以w_pos節(jié)點(diǎn)錨點(diǎn)為原點(diǎn),將該坐標(biāo)(Wpos)轉(zhuǎn)換為相對(duì)于w_pos節(jié)點(diǎn)錨點(diǎn)的相對(duì)節(jié)點(diǎn)坐標(biāo)
node_pos = this.node.convertToNodeSpaceAR(w_pos);
console.log(node_pos); // cc.p(0, 0)
// 獲取節(jié)點(diǎn)的包圍盒, 相對(duì)于父親節(jié)點(diǎn)坐標(biāo)系下的包圍盒
var box = this.node.getBoundingBox();
console.log(box);
var box = this.node.getBoundingBox();
console.log(box);
// 世界坐標(biāo)系下的包圍盒
var w_box = this.node.getBoundingBoxToWorld();
console.log(w_box);
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);
var w_pos = t.getLocation();
var pos = this.node.convertToNodeSpaceAR(w_pos);
console.log(pos);
pos = this.node.convertTouchToNodeSpaceAR(t);
console.log("====", pos);
}, this);
console.log("====", pos);
}, this);
// 把當(dāng)前這個(gè)sub移動(dòng)到世界坐標(biāo)為 900, 600;
//
// 把世界坐標(biāo)轉(zhuǎn)到相對(duì)于它的父親節(jié)點(diǎn)的坐標(biāo)
var node_pos = this.node.parent.convertToNodeSpaceAR(cc.p(900, 600));
this.node.setPosition(node_pos); // 相對(duì)于this.node.parent這個(gè)為參照物,AR為原點(diǎn)的坐標(biāo)系
// end
// 獲取當(dāng)前節(jié)點(diǎn)的世界坐標(biāo);
this.node.convertToWorldSpaceAR(cc.p(0, 0));
//觸摸事件所返回的坐標(biāo)對(duì)象
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);
//.把該點(diǎn)轉(zhuǎn)成世界坐標(biāo)(只能老爸轉(zhuǎn))
var pos1 = this.cocos2.parent.convertToWorldSpaceAR(this.cocos2.getPosition());
console.log(pos1)
//把該點(diǎn)(世界坐標(biāo))轉(zhuǎn)成節(jié)點(diǎn)坐標(biāo)
var pos2 = this.cocos1.convertToNodeSpaceAR(pos1);
console.log(pos2)
posted on 2019-04-06 16:47 Benjamin 閱讀(1228) 評(píng)論(0) 編輯 收藏 引用 所屬分類: 雜談