日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

cocos creator实现类似王者荣耀地图拖动的方法

發(fā)布時(shí)間:2024/3/26 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos creator实现类似王者荣耀地图拖动的方法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這是今天寫窗口拖動(dòng)時(shí),忽然想到的一個(gè)變式

下面是一個(gè)簡(jiǎn)單的實(shí)現(xiàn)拖動(dòng)物體的方法:

@property(cc.Node)theNode: cc.Node = null; //這里在外部賦值onLoad() {this.theNode.on(cc.Node.EventType.TOUCH_MOVE, event => {var delta = event.touch.getDelta(); //獲取觸點(diǎn)距離上一次事件移動(dòng)的距離對(duì)象,對(duì)象包含 x 和 y 屬性this.theNode.x += delta.x;this.theNode.y += delta.y;}, this)}

這里點(diǎn)擊的物體和移動(dòng)的物體是同一個(gè)物體,但若點(diǎn)擊的物體和移動(dòng)的物體不是同一個(gè)又會(huì)有怎樣的效果呢?
自然是在A物體上拖動(dòng),B物體會(huì)做移動(dòng),而A物體不動(dòng)咯。
這不是王者榮耀拖動(dòng)地圖的方法嗎?

@property(cc.Node)ClickPart: cc.Node = null; //這里掛載一個(gè)空白區(qū)域的節(jié)點(diǎn)@property(cc.Node)Map: cc.Node = null; //這里掛載地圖的節(jié)點(diǎn)speed: number = 1; //修改這個(gè)數(shù)值可以控制地圖拖動(dòng)的靈敏度onLoad() {this.ClickPart.on(cc.Node.EventType.TOUCH_MOVE, event => {var delta = event.touch.getDelta();this.Map.x += delta.x*speed;this.Map.y += delta.y*speed;}, this)}

這樣便實(shí)現(xiàn)了簡(jiǎn)單的地圖拖動(dòng),值得注意的是:當(dāng)拖動(dòng)的范圍超出自己定義的空白區(qū)域時(shí),只要拖動(dòng)沒有超出屏幕(畫布canvas)的范圍,地圖仍然是能移動(dòng)的。
以上只是實(shí)現(xiàn)了地圖的拖動(dòng),若想停止拖動(dòng)恢復(fù)原來的位置,可進(jìn)行以下操作:

position:cc.Vec2 = null; //定義一個(gè)位置進(jìn)行記錄onLoad() {this.theNode.on(cc.Node.EventType.TOUCH_START, event => {this.position = this.node.position;cc.log(this.position)}, this)this.theNode.on(cc.Node.EventType.TOUCH_END, () => {this.Map.position = this.position;})this.theNode.on(cc.Node.EventType.TOUCH_CANCEL, () => {this.Map.position = this.position;})}

總結(jié)

以上是生活随笔為你收集整理的cocos creator实现类似王者荣耀地图拖动的方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。