法线方向很混乱,视乎BoxCollider2D与CircleCollider2D还不一样

  • Creator 版本: 3.7.0

  • 目标平台: Chrome
    (十分重要,别简单的就说“原生”或者“网页”)–>

  • 重现方式:NodeA与NodeB相碰撞,B是BoxCollider2D,A是CircleCollider2D是或BoxCollider2D,A跳跃从下方撞向B,观察norma.y的值

  • 首个报错:

  • 之前哪个版本是正常的: 未测试

  • 手机浏览器: chrome

  • 编辑器操作系统: win11

  • 重现概率:100%

NodeA与NodeB相碰撞,B是BoxCollider2D,A是CircleCollider2D是或BoxCollider2D,A跳跃从下方撞向B,观察norma.y的值

下面是碰撞时候,B的脚本,打印normal的x和y方向,居然不一样

  • 采用BoxCollider2D时,normax.y = 1
  • 采用CircleCollider2D时,normax.y = -1

···
onBeginContact (selfCollider, otherCollider, contact: IPhysics2DContact | null)

{

var worldManifold = contact.getWorldManifold();

var normal = worldManifold.normal;

console.log("xy", normal.x, normal.y)

console.log("selfCollider " , otherCollider)

}

···


类似的问题也出现在预制体层级管理器

同一个BoxCollider2D对象,

  • 预制体拖拽到层级管理器,碰撞时候,法线 normal.y = -1
  • 程序方式,加载预制体,碰撞时候,法线 normal.y = 1

这是为什么呢?