你的浏览器禁用了JavaScript, 请开启后刷新浏览器获得更好的体验!
输入关键字进行搜索
搜索:
发现
话题
全文搜索
登录
[LayaAirIDE 2.0]两个物体发生碰撞的时候,如何让他检测碰撞点的位置
类似于当一个移动的球碰底部挡板的时候,如何判断他碰撞到的是中心点还是两边点,因为碰撞到中心点的时候我会让他直线弹回去,而碰到两边的时候我会让他斜线弹回去
没有找到相关结果
已邀请:
与内容相关的链接
提交
1 个回复
ggxxyy
赞同来自:
如果使用的是默认的物理引擎box2d,在碰撞事件监听函数里可以从第3个参数获取到碰撞信息,如:
ColliderHandler(a:Collider, b:Collider, c:b2Contact)
可通过b2Contact.GetManifold()方法获取到碰撞点相对于碰撞物体的本地坐标,
还可通过b2Contact.GetWorldManifold()方法获取到碰撞点的全局坐标,
具体实现请参考box2d手册,可参考:
http://www.ladeng6666.com/blog/?p=653
我实测
GetWorldManifold时老报错,尝试以下方法也取到了碰撞点全局坐标,可供参考:
ColliderHandler(a:Collider, b:Collider, c:b2
Contact): void{
let collider = c.m_fixtureB.collider;
let local = c.m_manifold.localNormal;
let point = {
x: collider.owner.x - collider.radius * local.x,
y: collider.owner.y - collider.radius * local.y
}
console.log(
point
);
}
其中b是
CircleCollider,如果b是BoxCollider,代码修改如下:
let point = {
x: collider.owner.x - collider.width * 0.5 * local.x,
y: collider.owner.y - collider.height * 0.5 * local.y
}
要回复问题请先
登录
发起人
176*****556
相关问题
两个对象new了一个相同的对象,调用第一个的一个方法,走进了第二方法里
sprite旋转以后,但是原来碰撞检测rect没有旋转
缓动Tween能用在3D物体或者特效上面吗?
求指点3d射线碰撞和UI点击穿透的问题
Laya2.6.0beta 物理引擎 刚体碰撞点位置获取不正确
laya2.0 3d物理碰撞穿透问题
关于2d碰撞检测
laya 3D碰撞器与 Unity 不一致问题
两个问题 有元件支援视频流渲染吗? Image元件读不了资料流
想让一个2D的图形被鼠标点击时缩放一下,或左右摇晃一下,最后回到原大小或原位置,应该用什么缓动模式
laya2.2 导出场景物理碰撞问题
问题状态
最新活动:
2021-01-23 14:56
浏览:
1928
关注:
2
人
商务合作
1 个回复
ggxxyy
赞同来自:
ColliderHandler(a:Collider, b:Collider, c:b2Contact)
可通过b2Contact.GetManifold()方法获取到碰撞点相对于碰撞物体的本地坐标,
还可通过b2Contact.GetWorldManifold()方法获取到碰撞点的全局坐标,
具体实现请参考box2d手册,可参考:http://www.ladeng6666.com/blog/?p=653
我实测GetWorldManifold时老报错,尝试以下方法也取到了碰撞点全局坐标,可供参考:
ColliderHandler(a:Collider, b:Collider, c:b2Contact): void{
let collider = c.m_fixtureB.collider;
let local = c.m_manifold.localNormal;
let point = {
x: collider.owner.x - collider.radius * local.x,
y: collider.owner.y - collider.radius * local.y
}
console.log(point);
}
其中b是CircleCollider,如果b是BoxCollider,代码修改如下:
let point = {
x: collider.owner.x - collider.width * 0.5 * local.x,
y: collider.owner.y - collider.height * 0.5 * local.y
}