码迷,mamicode.com
首页 > 其他好文 > 详细

libgdx, contact 接触的调用情况分析

时间:2014-05-10 04:31:48      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:blog   c   http   2014   使用   a   

bubuko.com,布布扣

 

背景:想要实现body1与body2接近到一个距离s后,将两者合并。

想法1:调用在回调函数:beginContact 中完成,但最终没能实现想要的效果。这个函数只在fixture1与fixture2发生接触的瞬间被调用。只要两个fixture没有分离,无论怎么移动body2,这个函数是不会再被调用的了,所以我的想法失败了。

endContact函数,在两个fixture分离时被调用一次;

preSolve,postSolve函数在两fixture碰撞时调用,且是成对出现。

如果想要“两个fixture有接触时就进行合并的效果”,那可以使用想法1。且在实验时发现,当beginContact函数被调用时,body1与body2之间的距离s的值不完全相同。产生不同的原因有2:第一,这个接触的时机与step()函数有关;第二,我计算的是两个body之间的position的距离,而beginContact函数被调用的时机是两个fixture的接触。换句话说,是两个圆形的话,则beginContact被调用时,这个距离的值应该是一样的。

 

想法2:在body2被拖动的过程中判定body1与body2的距离s,然后判断是否满足需求;

 

想法3:在渲染函数中判定body1与body2的距离s,在step函数之后;

个人偏向使用这种,因为body的属性修改及body对象的删除都在这里进行操作,否则可能会异常。

但这个渲染函数的调用是相当频繁的,则为了提高性能,在beginContact与endContact之间进行距离s的判定!

libgdx, contact 接触的调用情况分析,布布扣,bubuko.com

libgdx, contact 接触的调用情况分析

标签:blog   c   http   2014   使用   a   

原文地址:http://blog.csdn.net/benzkuai/article/details/25437643

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!