box2djs 一個bug world.Step執行數秒鐘的除錯記錄
在專案中用到box2d
動態增加了一個剛體,並設定了剛體的位置bd.SetPosition(x,y);
結果遊戲迴圈被卡死
除錯後發現world.Step這個函式和正常的情況相比,執行速度非常慢,要幾秒鐘才執行結束
單步除錯該函式
函式體內的程式碼片段如下
if (step.dt > 0.0) {
this.Solve(step);
}
if (b2World.m_continuousPhysics && step.dt > 0.0) {
this.SolveTOI(step);
}
最後定位到是this.SolveTOI(step);消耗最多的時間
單步進入this.SolveTOI(step);函式體內,發現this.m_contactList內的元素多達900多個
for (c = this.m_contactList;
c; c = c.m_next) {
c.m_flags &= ~ (b2Contact.e_toiFlag | b2Contact.e_islandFlag);
}
問題基本可以定位下來了是碰撞方面的問題
this.SolveTOI(step);函式體內程式碼並不能直接定位問題,嘗試從別的角度看看情況
對 listener.BeginContact = function (contact) {
var p1=contact.m_nodeA.other.GetPosition();
var p2=contact.m_nodeB.other.GetPosition();
var u1=contact.m_nodeA.other.m_userData;
var u2=contact.m_nodeB.other.m_userData;
var n=u1.type+u2.type;}
下斷點
發現不斷的發生碰撞事件,與this.m_contactList元素過多的狀況相吻合
再仔細分析發生碰撞時候的body的座標,發現p1的值總是為undefined,看來這就是問題的關鍵了
通過排查終於發現是前面bd.SetPosition(x,y);出現了問題,這樣的呼叫會導致bd.GetPosition()為undefined
正確的做法應該是bd.SetPosition({x:x,y:y});
總結了下這是筆誤引起的bug,解決的辦法是通過除錯定位問題
相關推薦
box2djs 一個bug world.Step執行數秒鐘的除錯記錄
在專案中用到box2d 動態增加了一個剛體,並設定了剛體的位置bd.SetPosition(x,y); 結果遊戲迴圈被卡死 除錯後發現world.Step這個函式和正常的情況相比,執行速度非常慢,要幾秒鐘才執行結束 單步除錯該函式 函式體內的程式碼片段如下 if (ste
在練習使用nio時,無意中好像發現一個bug
res com int system 是我 next writable gis java.net 就是我在看netty權威指南時,裏面有個TimeServer的例子,然後按著上面的寫了,在用到Nio時,我用客戶端向服務端發送字符串“date”、“d"、"da"、”dat“等
Ueditor1.3.6 setContent的一個bug
cau ann can error: con set pro div 編輯器 Baidu Uedtior這個版本的占位標簽為script標簽,UE.get("editor")操作初始化編輯器,這個初始化動作似乎是個異步動作,在這個語句之後如果setContent
【Python圖像特征的音樂序列生成】關於mingus一個bug的修復,兼改進情感模型
.cn 事情 height trac most 1-1 使用 int .py mingus在輸出midi文件的時候,使用這樣的函數: 1 from mingus.containers import NoteContainer 2 from mingus.midi impo
CS61b lab3 分享一個bug,足足找了一個多小時,希望各位別入坑哈
好的 log http 錯誤代碼 style obj item next slist part1: 寫一個測試程序,比較簡單就不貼代碼啦,運行結果: part2: 改進InserEnd method,我是按照課上講的把原來的singlyList變成doubleList,在
Navicat 軟件的一個bug.
src mysql5 軟件 3.5 com mysql order wid right navicat 11.2.16企業版。 mysql 5.7.17 數據格式*.json 準備了一份數據,json格式的。通過navicat 11.2.16 entepries版本導
在Android Studio中創建(或添加)第一個Hello World應用程序
創建過程 eight 過程 使用真機 項目路徑 應用程序 設備 ext 直接 下面我們將使用Android Studio創建第第一個簡單的Hello World應用程序。 1、打開Android Studio,加載畫面如下圖所示: 2、選擇”Start a new A
五分鐘學習React(二):我的第一個Hello World
pre 模板 介紹 現在 gpo 定義 back 解釋 一個 我的第一個React應用 接著我們上一期所講的內容,通過create-react-app腳手架創建的應用,它是基於ES6的語法生成的。我們清空src目錄下的文件,並分別創建index.js和index.css文
在做vue計算屬性,v-for處理數組時遇到的一個bug
this 解決 就是 com 渲染 fault post return 我想 問題 bug: You may have an infinite update loop in a component render function 無限循環 需要處理的數組(在 ** ssq
最近很火的微信牛牛棋牌房卡搭建的源碼的一個BUG修復
std ray 下載 .com amd 其它 ceil ans 源碼 最新版修復所有bug出租微信牛牛棋牌房卡搭建(h5.fanshubbs.com)扣扣1687054422 BUG說明:當後臺設定某個玩家的控制贏率後。10局20局的就沒有問題。當是大於20,就會出現玩到最
第一個bug
技術分享 data 自己 一個bug 樣式 子節點 多重 元素 節點 話不多說自己遇到的第一個小程序bug 需要渲染渲染多重元素,這個沒什麽。but當你要獲取這個大樣式的id進行各種操作時,你需要每一個子節點都加上data-=“”屬性這樣就很麻煩了,所以需要希望小程序能出
Markdown使用時的一個BUG的發現過程
識別 即使 平臺 導致 一個地方 col 博文 -o bug 前言 遇到bug應該只要提交給官方就好了。但是我正好在學習Web前端,遇到了問題就正好運用新學的知識試著自己處理一下。恰好我又剛好運用新學的知識找到了問題,於是就記錄一下自己遇到問題和解決的過程。 問題1-部分內
記錄Window系統下myeclipes連接linux下mysql所出現的一個bug
給賬號 onf flush 問題 info drive strong user BE 記錄myeclipes遠程連接mysql所出現的一個bug 今天在玩框架hibernate時,出現一個非常費解的bug,話不多說,先看bug Access denied for
智能合約從入門到精通:用Solidity開發一個“Hello World”
區塊鏈 智能合約 簡介:上一章中我們聊到了智能合約的應用場景,在了解區塊鏈技術目前的發展情況、智能合約的概念以及其應用場景之後,我們將在後續的文章中共同學習智能合約的編成語言。今天,我們就來簡單地談一談用於編寫智能合約的語言——Solidity語言。 那麽,什麽是Solidity語言呢?在前面的文章中
VS2010.STL::list的一個bug
answer blank word sdn dword tar offset ref HR 1、ParameterAnswer_Parse(...) 下 FlistParameterOffset.clear(); 出錯(list<DWORD>.clear())
5分鐘部署一個Hello World Servlet到CloudFoundry
圖片 掃描 http 公眾號 orien CI auto uil 令行 首先從我的Github下載我寫好的hello world Servlet到本地。 安裝Maven,然後執行命令行mvn clean install,確保build成功,在項目根目錄的target文件夾
記錄一個bug
inf ram png 一個bug img sdn 網頁 execution http [ ERROR ] Caught exception while allowing TestExecutionListener [org.springframework.test.con
發現一個騙粉絲的人後發現博客園的一個bug
說明 image rdquo 互聯網 主頁 參數 互聯 git ogg 發現一個騙粉絲的人後發現博客園的一個bug 當你點開這篇文章的時候,如果你已經登錄博客園賬號,那麽你自動回成為我的博客園粉絲,因為我加了自動關註的js,這裏並不是想騙粉絲,希望博客園能重視這個bug(
struts2值棧命名的一個bug
turn 如果 class ima 應該 方法 src inf code Action中的的屬性名和值棧中屬性名應該數絕對對應的關系,但是如果引用名和get方法寫成如下形式: private List<User> uList; public List
lua5.1的一個bug——不支持位運算
http 異或 mar near type per mbo .exe col 下載了luaforwindows5.1.exe文件,並按照之後,寫了一個腳本文件如下,並運行,結果出乎意料,unexpec symbol near ‘&‘。這意思是有語法錯誤。下了最新版本