还是3个物体移动,A持续移动到C,需要不断躲避B



  • 已经写了差不多的一个方法,可以做到A根据B和C的位置来移动,但是因为角度问题,有-180—180,0-360,以及无限,所以在特定角度时这个方法就失效了



  • 正常的球为A,透明球为C,小球为B,橙色的线为B对A的方向,绿色的线为A对C的方向,黑色的线为躲避B并向C移动的方向,这里用的简单计算两个角度相加除以2,但是因为角度在180时会变成-180,所以造成黑色的线没有始终指向橙色线和绿色线夹角中较小的一边
    undefined



  • @Yamls 比较角度不要直接比较值,直接比较值就会出现你这个问题,要用比较角度专门的条件,或者是用表达式换算角度差值,才不会出现这种需要判断-180、180和什么0到360度的情况



  • 感谢,但是具体该怎么做呢。。。。。。



  • 因为并没使用比较角度这个条件,而是直接将角度加上去的



  • @Yamls 不是有个顺时针方向的角度比较吗,默认较小夹角作为比较的,较小夹角边在顺时针方向就条件为真,否则为假,用那个就能判断较小夹角边,再用anglediff(a1, a2) 获取两个角度最小的差值,然后你用这个差值除以2,根据前面判断的较小夹角边加/减给橙线角度(加的话就是顺时针递增,减的话就是逆时针递增角度)就行了,顺时针的那个判断精灵本身有自带,系统组件条件里也有一个不带实例筛选的版本,怎么会没有呢



  • @Yamls 不想用楼上那位仁兄的思路的话,也可以自己写表达式换算,利用求余运算来把-180到180和0到360(只有这两种)统一换算换算成0到360,具体就是拿 (角度值+360)%360,换到你的情况里就是:((角度值1+360)%360+(角度值2+360)%360)/2


登录后回复