如何让绳子关节组件Rope与其他物体产生碰撞产生缠绕的效果

请问这个黑色导管您有什么可行的解决方案吗?我目前卡在这一步,虚心请教

黑色导管我没有去实现,我的demo中用得是PhysicsCircleCollider,你可以试着用PhysicsPolygonCollider以多边形的方式实现

请问这个graphic画出来的线,如何更换纹理呢。找了很多资料都搞不定

你可以看下白玉无冰的教程在论坛有 【讨论】Graphics 画线纹理的一种简单实现!(新增绳子纹理效果)

真诚的Mark一下

Mark 你的绳子检测是否碰到灯的思路是怎样的 可以提供一下吗

割绳子了解一下

物理就可以用刚体的碰撞检测了

在射线检测时就会把碰到的物体的collider记录下来,详细见addPivot函数


在update射线处理中,碰到的collider以及位置会被记录下来

mark!!!

好的 谢谢 学习了

哈哈哈 虽然问的不是这个 但是还是谢谢回复

如果是缠绕动态的物体 只有头和倒数第二点做射线检测 要动态改变保存点的位置吧 我试过动态加刚体 用碰撞检测来改变刚体的位置 但是太多了会很卡 大佬有什么好的思路可以缠绕动态的物体跟着移动模拟更真实的绳子 要检测后面的线段的话 好像只能加刚体让线具有物理特性 暂时想不出来其他的

一个字牛,感谢分享

你这一串这么长的字我一口气全读完了,真够呛。动态物体当时因为需求不需要,所以没考虑过。先解剖一下:

先跟你说一下,检测的东西可能会变多(性能方面未知,方案仅供参考)

如果需要绳子具有真正的物理特性(刚体),可能需要在update根据绳子的状态动态给物体施加力(比如绳子现在被物体拉成了V字型,那你现在需要对物体施加一个正上方的力,至于力的大小由你自己控制)

首先跟之前的主要的两点区别:
· 缠绕上的物体会动
· 缠绕上还可能会发生二次缠绕(绳子缠绕了A--------B),中间突然窜出C

现在的主角很显然不止是绳子了,还有一个主角是物体
所以咱们要给物体主角一个牌面:缠绕点记录在物体上,绳子端储存缠绕的物体
原理就是把现有的绳子变成多段绳子
· 绳子的结构变成了:物体A-----物体B
· 物体的结构变成了:首缠绕点-----其他缠绕点-----尾缠绕点

第一点: 缠绕上的物体会动(试行解决方案)
· 物体移动对应缠绕点偏移

第二点:缠绕上还可能会发生二次缠绕(试行解决方案)
· 那现在我们需要检测的东西就不是像之前的只管最后一个缠绕点了。
新的检测得变成:
· 绳子起点 ----- 物体A首缠绕点 ->进行检测(检测方式还是和之前一样)
· 物体A尾缠绕点 ----- 物体B首缠绕点 ->进行检测
· 物体B尾缠绕点 ----- 绳子终点 ->进行检测

理论是正确的 我试了一下 可以实现 麻烦再于添加新的绳子和删除绳子时对于点的记录
1.每段绳子只保存头尾坐标
2.碰撞点全部保存在障碍 同时更新前后两个绳子的坐标

我现在就是速度太快的情况下 射线检测不到会出问题 慢速是没问题 暂时解决方法是 每次移动只移动1两个像素 然后每帧移动多个像素 性能还没测 添加十几个绳子没什么问题 :10:

把物体一帧移动的位置进行分段处理,一帧对该物体进行多次射线检测。
当然这会更加耗费性能,做个取舍,
设置一个阈值。
比如阈值 为 10 像素
物体这一帧移动了33像素,那么你需要检测多检测3次。物体分别在10,20,30像素的时候检测一次
当然这个还可以进一步优化,或者其他拓展办法

我想到一个新的方案 只需要检测一次就行。
速度过快 点在障碍里面的时候 通过计算把他修改成障碍的切点 。
这样只要不是一帧移动直接超过障碍半径的一半就没问题 。
亲测 解决了性能的问题。:5:

哦 对了 我游戏里都是圆 所以我这个思路完全可以 其他多边形的障碍应该也可以 不过要更多的计算:5:

mark.