【求组3.8.X】为什么无法通过碰撞回调来设定精灵的位置

image

老哥我尝试了一下,从调试信息看,hero的状态没有改变
我应该怎么调整呢?

然后我尝试将英雄和地图初始的时候分开,然后我发现,英雄的初始状态就一直为true,这个时候我也无法碰撞地图,是我哪里设置的问题吗?

首先你这个代码写的就有问题,if判断判断里写一个’='干什么?

老哥 我改了一下整体的逻辑 刚才那个图错了 你再看看?

这里的=不应该是==吗?

是的 老哥 这里我填错了 我现在改成这样了

现在我看了打印信息 好像是heroCollisionEnd这里没有触发

英雄离开了地图还没有触发结束碰撞?

是的,现在就是这个问题,而且我发现,我将英雄的初始位置与地图不放在一起,这个时候我控制英雄去碰撞地图,也无法触发碰撞回调了

我试了一下我发现我的可以呀

那我就真的不知道怎么搞了 这是我所有相关的内容 你受累帮我看看?

这是与英雄相关的


这是与地图相关的


这是系统相关的


image

我用3.8.6试了一下发现可以运行啊 :thinking:
你把你这里的代码注释掉在编辑器里试试看

我试了还是不行 那就有点神奇了 那老哥有什么办法可以自我排查一下么?

我也是确实整不明白了 我也上论坛请教了 也找AI了 好像都不行

反正现在就是英雄的碰撞状态从一开始的false变成true后 就一直变不回去了

真的是搞不明白了

另外我看我这里的编辑器最新的是3.8.5?

给你的个我刚才写的demo, 你用你的编辑器打开看看能不能正常运行
test.zip (788.6 KB)

你是用改位移的方式移动的英雄吗,可能刚体没有激活,将英雄刚体的Allow Sleep关掉,刚体就不会休眠了

我用的是这个方法来修改的

我没有3.8.6的版本~~打开后 右边那个小方块一直往上移动

image

这个是打印的信息

那就应该没问题呀这样,下面的小方块碰到上面的小方块是不是会更改位置?

是的 是变化了 位置 确实也触发了分离的状态

但是从代码上来看 好像我们的机制不同 你是直接在start() 就操作完了

我只是在start()里面进行碰撞监控

这是一样的,这都是回调函数

那就有点神奇了 他没有END_CONTACT的回调 给我感觉 就好像是双方只激活了一次触发开始的回调 然后就全部失效了

我也不知道为什么它只执行了一次