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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CocosCreator实现不规则的点击区域监听

發布時間:2024/1/8 编程问答 66 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CocosCreator实现不规则的点击区域监听 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CocosCreator實現不規則的點擊區域監聽

開發一個農場小游戲,用常規的點擊區域,會產生點擊區域重疊問題。(展示的圖片是已經調整為cc.PolygonCollider方法之后)

查詢網上的方法,大部分是把節點變為3d就可以調節點擊區域,但不知道為什么,區域已經如圖所示,但是我所點擊的土地會偏移到上面那塊土地,這個問題由于項目時間緊張就沒有去深究。還有農場常見的是可以拖動土地背景的,用普通的掛載辦法,button會遮擋住背景的監聽,所以又找到了這個辦法,使用cocos自帶的碰撞組件:cc.PolygonCollider,用這個組件來劃定區域,判定點擊的落點是否在區域內,要注意轉化成世界坐標再進行判斷。

Editing勾選之后,可以手動調節每個點的位置來框選圖形,就像ps里的多邊形套索工具。points就是幾個點。

設置完成之后,腳本里可以判定我點擊的落點是否在區域內。(這里在其他腳本給farmbg添加了拖動,就不在這里寫出了)

//stopPropagation()阻止事件冒泡this.farmbg.on(cc.Node.EventType.TOUCH_MOVE, (touch) => {touch.stopPropagation();}, this);//this.farmbg.on(cc.Node.EventType.TOUCH_END, (touch) => {for (let i = 0; i < 15; i++) {if (this.polygonHitTest(i, touch.getLocation()) == true) {console.log("落點在區域內");}}}, this);//此方法判定是否在區域內,返回的值為true或false,因為我這土地有15塊所以要分開進行判斷,直到找到正確的點擊到的土地。//cc.Intersection.pointInPolygon()是測試一個點是否在一個多邊形的方法。//point為點擊的落點的世界坐標,polygonCollider.points則是 polygonCollider組件points圍成的多邊形范圍。polygonHitTest(i, point) {var polygonCollider = this.landsButton[i].getComponent(cc.PolygonCollider);point = this.landsButton[i].convertToNodeSpaceAR(point);return cc.Intersection.pointInPolygon(point, polygonCollider.points);}

這樣就避免的button組件覆蓋住底下大背景的監聽,以及可以準確點擊到需要的土地區域。

總結

以上是生活随笔為你收集整理的CocosCreator实现不规则的点击区域监听的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。