我用的是3.8.5 做的是一个2D的项目
该函数为 当函数被调用时 分别移动图片ABC 到新位置
当我用按钮进行调用时 该函数能正确将图片移动到我想要的位置
但是当我用碰撞条件调用时 能正确的往该函数传入参数 但是图片却没有正确移动
我用的是3.8.5 做的是一个2D的项目
该函数为 当函数被调用时 分别移动图片ABC 到新位置
当我用按钮进行调用时 该函数能正确将图片移动到我想要的位置
但是当我用碰撞条件调用时 能正确的往该函数传入参数 但是图片却没有正确移动
有人能解答一下么?
没代码只能瞎猜。
你自己打LOG,传的位置是否正确。函数是否调用。
盲猜碰撞触发多次,函数调用了多次
并没有 我在调用的开头 打印了消息出来 每次碰撞 都是调用1次
我给你看看 我的大致代码
这是英雄的碰撞代码
heroCollision(selfCollider: Collider2D, otherCollider: Collider2D) {
console.log(`hero碰撞了${otherCollider.name}`);
if (otherCollider.node && otherCollider.node.name === 'map') {
const mapX = Math.round(otherCollider.node.position.x);
const mapY = Math.round(otherCollider.node.position.y);
console.log(`调用 mapGenerate 函数,参数: 1, ${mapX}, ${mapY}`);
this.mapGenerate(1, mapX, mapY);
}
}
mapGenerate里面有对物理对象进行操作吗,比如改位置。在物理碰撞的回调中操作物理对象会不生效,可以延迟一帧执行
我试了 好像还是没法碰撞 有个基础的问题 我想请教一下
我只想做一个纯2D的游戏 就算发射子弹 也用不到 刚体里面的重力系统 那我在设置精灵的时候 除了需要添加碰撞体之外 是否可以不用添加刚体组件呢
2.x可以,3.x貌似没有单独的碰撞系统
是否就是说 我想做碰撞的话 两个精灵 我都要加 刚体和碰撞体才行呢?
https://docs.cocos.com/creator/3.8/manual/zh/physics-2d/physics-2d-contact-callback.html
按文档说的,Box2D是需要刚体的
我重头设置了一下 现在我两个都添加了刚体组件和碰撞器组件
并且我再设计上 将英雄的脚本挂到了英雄的预制体上 地图同理
但是他们就是无法触发碰撞效果 这是我的代码截图 能帮我看看吗?
这是英雄的代码和属性面板
这是地图的代码和属性面板

这是物理设置界面
我不管怎么做 就是无法触发碰撞结果
我想要的效果是这样的
当英雄与地图碰撞时 地图触发mapChange函数
将其中任意一个刚体的类型改为其他类型试试

感谢 现在可以碰撞了
你好现在确实可以碰撞了,感谢
但是有2个新问题:
1、初始化后,第一次碰撞函数确实是触发了,并且我通过打印信息页看到能正常执行代码,但是就是没法移动map的位置
2、初始化碰撞后,我分离hero和map后再次碰撞他们却不能再次触发碰撞函数,并且我在使用hero碰撞别的map的时候,就无法map的碰撞函数
我的设计思路是,初始化碰撞后,会触发一次map自身的碰撞函数,后续当我控制hero离开map,但是当hero与map再次碰撞时,依然会调用map自身的碰撞函数
这是我将打印信息调出来后,明明代码里面显示已经移动了,但是实际的界面中,却还是在原位置

另外,我尝试使用按钮来调用地图身上的函数,就能实现我想要的功能,惟独使用碰撞调用就无法实现