现在场景是这样,我有在Canvas上有两个节点,part1,和part2,part1带有BoxCollider2D,RigidBody2D Type为Dynamic但是Gravity Scale设置为0来保证不会下坠,part2带有PolygonCollider和RigidBody2D Type为Kinematic

我写了一段代码通过每帧设置世界坐标的方式来使part2跟随鼠标移动,以下是代码:
import { Input } from ‘cc’;
import { PolygonCollider2D } from ‘cc’;
import { Contact2DType } from ‘cc’;
import { Vec3 } from ‘cc’;
import { input } from ‘cc’;
import { _decorator, Component, Node,Collider2D,IPhysics2DContact } from ‘cc’;
const { ccclass, property } = _decorator;
@ccclass(‘MouseFollowTest’)
export class MouseFollowTest extends Component {
start() {
input.on(Input.EventType.MOUSE_MOVE,(event)=>{
let pos = event.getUILocation();
this.node.setWorldPosition(new Vec3(pos.x,pos.y,0))
})
let collider:PolygonCollider2D =this.getComponent<PolygonCollider2D>(PolygonCollider2D);
collider.on(Contact2DType.BEGIN_CONTACT,this.onBeginContact,this);
}
update(deltaTime: number) {
}
onBeginContact (selfCollider: Collider2D, otherCollider: Collider2D, contact: IPhysics2DContact | null) {
// 只在两个碰撞体开始接触时被调用一次
console.log('onBeginContact selfCollider:',selfCollider);
console.log("onBeginContact otherCollider:",otherCollider);
}
}
实际测试发现.无论part2如何移动都不会触发onBeginContact
但是如果我将初始速度设置为(-1,0)这样part2会自动向左移动,这样碰到part1时是能触发onBeginContact 的
这个碰撞是有什么说法吗?真的直接设置坐标不进入物理检测吗?那这样要是有个鼠标拾取肥皂擦拭物体表面,在接触到的位置留下泡沫这种功能不是根本做不到了?
