cocos-Lua 捕魚碰撞檢測方法
在Lua中不用物理引擎的檢測碰撞會很卡,Lua的for迴圈的效率比C++的低幾十倍
那樣的話,怎麼處理呢?我在想能不能把碰撞檢測的過程扔到C++中處理呢
後來發現cocos2dx中有一個物理世界,可以進行碰撞檢測,於是把碰撞檢測的處理扔到那去處理,發現在玩時就沒有那麼卡了
首先先繫結一個碰撞檢測的事件,然後建立每個魚的PhysicsBody,還有就是設定物理掩碼,都設定為無碰撞效果,只需要檢測是否碰撞到了
local box = cc.PhysicsBody:createCircle(self._sp:getContentSize().width/3) box:setDynamic(true) box:setCategoryBitmask(1) box:setContactTestBitmask(1) box:setCollisionBitmask(2) self._sp:setPhysicsBody(box)
因為我們只是需要檢測子彈與魚是否碰撞到,不需要顯示碰撞效果,所以掩碼都一樣
新增的碰撞檢測事件
local conListener=cc.EventListenerPhysicsContact:create() conListener:registerScriptHandler(function(contact) local node1=contact:getShapeA():getBody():getNode() local node2=contact:getShapeB():getBody():getNode() if not node1 or not node2 then return end if node1:getName() ~= node2:getName() then local fish = nil local vB = nil if node1:getName() == "Bullet" then vB = node1:getParent() fish = node2:getParent() else vB = node2:getParent() fish = node1:getParent() end if not vB._isAlive then return end if vB._isLockFishID ~= 0 and fish._id~=vB._isLockFishID then return end --播放魚被擊中的效果 self:showHitFish(fish) --播放撒網動作 local vBPos = cc.p(vB._sp:getPositionX(),vB._sp:getPositionY()) self:FallingNet(vBPos, vB) local info = { chairId = self._deskNum, fishId = fish._id, bulletKind = vB._buttleMultiplePicNum, bulletId = vB._id, bulletMulriple = vB._buttleMultiple, eventType = LKPY_NOTIFY_AssistantID.SUB_C_CATCH_FISH, } self._callback(info) for k,v in pairs(self._bulletList) do if v._id == vB._id or v._isKnockBall == 0 then table.remove(self._bulletList,k) v:disappear() break end end end return true end,cc.Handler.EVENT_PHYSICS_CONTACT_BEGIN) cc.Director:getInstance():getEventDispatcher():addEventListenerWithSceneGraphPriority(conListener,self)
其實就一個思路,採用物理世界的碰撞檢測就行
相關推薦
cocos-Lua 捕魚碰撞檢測方法
在Lua中不用物理引擎的檢測碰撞會很卡,Lua的for迴圈的效率比C++的低幾十倍 那樣的話,怎麼處理呢?我在想能不能把碰撞檢測的過程扔到C++中處理呢 後來發現cocos2dx中有一個物理世界,可以進行碰撞檢測,於是把碰撞檢測的處理扔到那去處理,發現在玩時就沒有那麼卡了
lua實現cocos多邊形碰撞檢測
定義幾個資料型別和函式 function vec(x, y) return {x, y} end v = vec -- shortcut function dot(v1, v2) return v1[1]*v2[1] + v1[2]*v2[2] end fu
unity碰撞檢測和觸發器的方法函式
碰撞檢測涉及三個函式: 當與物體碰撞的一瞬間:OnCollisionEnter(Collision collision),collisionInfo是撞到的物體的碰撞資訊; 當在與物體持續碰撞接觸期間:OnCollisionStay(Collision collisio
cocos creator 碰撞檢測 拾取道具小案列
前言:creator有碰撞檢測系統 +物理碰撞系統,這個是兩個獨立的模組;demo:知識點:程式碼開啟碰撞檢測系統(預設是關閉碰撞檢測),開啟和關閉碰撞檢測的除錯: var manager = cc.director.getCollisionManager();
cocos creator學習11——碰撞檢測系統
碰撞分組 cocos creator中新版本中的碰撞分組功能,能夠使開發者更方便地管理碰撞檢測 這次我使用飛機大戰的專案進行詳細介紹 點選編輯可以管理碰撞元件的檢測 cocos引擎會根據碰撞分組配對,進行相應的檢測 如上圖,子彈組會與enemy組
cocos Creator碰撞檢測
properties: {directionX:0, //根據元件上設定的數字來進行方向移動 directionY:0,}, // use this for initialization onLoad: function () {
Cocos2d-x 精靈碰撞檢測(方法一)
宣告函式碰撞檢測函式,兩個精靈和重寫update bool isCollision( CCPoint p1,CCPoint p2,int w1,int h1,int w2,int h2 ); CCSprite *sp2; CCSprite *sp1; virtua
Unity 使用物理射線(Physics.Raycast),實現扇形區域碰撞檢測三種方法
Unity 使用物理射線(Physics.Raycast),實現扇形(Fan-Shaped)區域碰撞檢測。 網上已經很多實現扇形檢測的方法。大部分都是用MeshCollider實現的。而據說MeshCollider這東西很耗效能(沒有親測),所以就用射
Lua中“.”調用方法與“:”調用方法的區別
-- name obj oca -s fun str member elf Lua中“.”調用方法與“:”調用方法的區別:
實例介紹Cocos2d-x中Box2D物理引擎:碰撞檢測
函數實現 pda creates pty blank oid rtu and 重構 在Box2D中碰撞事件通過實現b2ContactListener類函數實現,b2ContactListener是Box2D提供的抽象類,它的抽象函數:virtual void BeginC
“等一下,我碰!”——常見的2D碰撞檢測
數量 實現 情況 解決 app mes poi html5 測試 轉自:https://aotu.io/notes/2017/02/16/2d-collision-detection/ 在 2D 環境下,常見的碰撞檢測方法如下: 外接圖形判別法 軸對稱包圍盒(
四叉樹優化碰撞檢測
level 需要 quadtree 存在 保持 是我 node fun str 轉自:http://blog.csdn.net/qq276592716/article/details/45999831 遊戲中碰撞檢測分為兩個階段:broad phase 和 narrow
Cocos2d-x 3.0中 物理碰撞檢測中onContactBegin回調函數不響應問題
track 後來 which compare mar details egl def trac 好吧,事實上這篇也是暫時冒出來的,近期朋友要做個物理遊戲,曾經做物理還是用box2d,呃。確實要花些功夫才幹搞懂當中的精髓,可是聽講這套引擎又一次封裝了一次。要easy非
7, 碰撞檢測, 精確非精確
graphics ner c const 檢測 16px nds extend objectc private import tr = egret.sys.tr; class Main extends egret.DisplayObjectContainer {
cocos-lua
elseif rec position func stat dsp art unit height function YZMGame33:initAnimate(path,row, col, width, height, delay) local perWidth =
CSMA/CD協議(載波偵聽多路訪問/碰撞檢測) 最小幀長理解
ges 傳輸 分享 png 理解 時延 cnblogs mage csma/cd 以下的幀長有的是指幀的時間長度,幀的時間長度= 幀長/傳輸時延 CSMA/CD協議(載波偵聽多路訪問/碰撞檢測) 最小幀長理解
canvas遊戲和動畫中的碰撞檢測
底部 bsp rect circle 進行 eight nbsp odi word 碰撞檢測關鍵步驟 碰撞檢測需要處理經歷下面兩個關鍵的步驟: 計算判斷兩個物體是否發生碰撞 發生碰撞後,兩個物體的狀態和動畫效果的處理 計算碰撞 只要兩個物體相互接觸,它們就會發生碰撞
cocos-Lua中的class與require機制
繼承 manager 包含 logic str src 傳參數 loaded 全局變量 cocos-Lua中的class與require機制 local layer = require("PaiGow.src.GamePlayerListLayer")local Gam
利用jsplumb和碰撞檢測自動生成流程圖
for ans ont != 500px cat clone tran tex 使用jsplumb構建流程圖模型時,有一個需求要求,選項可以從選項表中拖拽到指定容器,並且兩個選項要接觸到的時候才能連接起來,不接觸不能連接。效果圖如下 略醜~ 因為這裏用到了拖拽,拖放功
碰撞檢測
fun posit z-index pan col htm tle capture client html代碼: 1 <div id="div1"></div> 2 <img src="img/1.jpg" id="img1"> cs